1.0.0-feature-25a0fa-khq1z1ck • Published 5 years ago

@atlas-engine/atlas_engine_sdk v1.0.0-feature-25a0fa-khq1z1ck

Weekly downloads
474
License
MIT
Repository
github
Last release
5 years ago

Atlas Engine SDK

Das Atlas Engine SDK stellt Typen und Schnittstellen bereit, um Extensions für die Atlas Engine zu entwickeln.

Verwendung des SDKs

Das SDK stellt alle Atlas-Engine-Typen bereit, die verwendet werden können um eine Extension in TypeScript zu entwickeln.

npm i --save @atlas-engine/atlas_engine_sdk

Beispiel:

import {AtlasEngine, AtlasEngineEvent, onLoadFunction} from '@atlas-engine/atlas_engine_sdk';

export const onLoad: onLoadFunction = (engine: AtlasEngine) => {
  engine.registerEventMiddleware(onAtlasEngineEvent);
  return Promise.resolve();
};

function onAtlasEngineEvent(event: AtlasEngineEvent): Promise<void> {
  return Promise.resolve();
}

Beispiel

Unter ./sample/extension ist eine Beispiel-Implementierung zu finden.

Diese lässt sich folgendermaßen Starten:

# Installieren der abhängigen Pakete
npm ci --prefix sample/extension
# Starten einer Atlas Engine, die als extensionsDir den sample-Ordner verwendet
npm start --prefix sample/extension

Im Log lässt sich nachvollziehen, dass die Extension erfolgreich geladen wurde:

2020-11-19T09:28:49.538Z - info: [atlasengine:extension:sample] Loading extension...
2020-11-19T09:28:49.538Z - info: [atlasengine:extension:sample] Finished loading.
2020-11-19T09:28:49.538Z - info: [atlasengine:extension] Loaded extension sample_extension version 1.0.0.

Die Sample-Extension registriert eine Event-Middleware auf dem Atlas-Engine-Objekt, die den Event-Typen von empfangenen Events in auf der Konsole ausgibt. Wenn z.B. ein Prozess auf der Engine unter localhost:8000 gestartet wird, sollte im Log folgendes zu sehen sein:

2020-11-19T09:31:46.628Z - info: [atlasengine:extension:sample] Received event OnFlowNodeEntered
2020-11-19T09:31:46.634Z - info: [atlasengine:extension:sample] Received event OnFlowNodeExited
2020-11-19T09:31:46.641Z - info: [atlasengine:extension:sample] Received event OnProcessFinished

Extensions in die Atlas Engine einbinden

Standardmäßig werden Extensions aus dem Ordner ${HOME}/.atlas/engine/extensions geladen. Der Pfad lässt sich mit dem Startup-Parameter --extensionsDir ändern:

Sowohl beim Start über die CLI:

atlas-engine --extensionsDir '/my/custom/extensions/dir'

Als auch beim Start als embedded Software:

await AtlasEngine.launch({
  extensionsDir: '/my/custom/extensions/dir',
});

Aufbau einer Extension

Jede zu ladende Extension muss in einem eigenen Unterordner von extensionsDir liegen und mindestens eine package.json und eine nach JavaScript transpilierte Einstiegspunkt-Datei enthalten, die in der package.json als main angegeben ist.

tree -L 2 ${HOME}/.atlas/engine/extensions
├── extension01
│   ├── index.js
│   └── package.json
└── extension02
    ├── index.js
    └── package.json

Jede Extension muss mindestens eine eigene package.json mit name, version und main enthalten.

{
  "name": "extension01",
  "version": "1.0.0",
  "main": "index.js",
  "dependencies": {
    "@atlas-engine/atlas_engine_sdk": "^1.0.0",
  }
}

main muss auf eine gültige JavaScript-Datei zeigen, in welcher die Extension gehostet wird.

In der main-Datei können Extensions eine onLoad-Funktion exportieren, die von der Engine beim Laden mit einem Atlas-Engine-Objekt aufgerufen wird, welches alle Atlas Engine Funktionen exportiert, die von einer Extension genutzt werden können.

export const onLoad: onLoadFunction = (engine: AtlasEngine) => {
  engine.registerEventMiddleware(onAtlasEngineEvent);
  return Promise.resolve();
};

Interaktion mit der Altas Engine

Der AtlasEngine Typ stellt Schnittstellen zur Interaktion mit der Atlas Engine bereit.

registerEventMiddleware

registerEventMiddleware erlaubt es einer Extension sich auf Log Events der Atlas Engine zu subscriben.

Der hier angegebene Callback wird dann bei jedem eingehenden Log Event ausgeführt.

import {AtlasEngine, AtlasEngineEvent, onLoadFunction} from '@atlas-engine/atlas_engine_sdk';

export const onLoad: onLoadFunction = (engine: AtlasEngine): void => {
  // Die Funktion `onAtlasEngineEvent` wird als Event-Middleware registriert
  engine.registerEventMiddleware(onAtlasEngineEvent);
};

// Gibt den Typen jedes empfangenen Events auf der Konsole aus
function onAtlasEngineEvent(event: AtlasEngineEvent): void {
  console.log(`Received event ${event.eventType}`);
}

TODO: Weitere Funktionalitäten beschreiben

Logging

Damit das Logging der Extension einheitlich zu dem Log der Atlas Engine passt, empfiehlt es sich den Logger loggerhytm zu verwenden.

npm i --save loggerhytm

index.ts:

import {AtlasEngine, AtlasEngineEvent, onLoadFunction} from '@atlas-engine/atlas_engine_sdk';
import {Logger} from 'loggerhythm';

// Beim Erstellen des Loggers kann ein Namespace angegeben werden, der beim Logging verwendet wird.
// sample sollte durch den Namen der Extension ersetzt werden
const logger = Logger.createLogger('atlasengine:extension:sample');

export const onLoad: onLoadFunction = (engine: AtlasEngine) => {
  logger.info('Loading extension...');

  return Promise.resolve();
};
3.3.4

2 years ago

3.3.3

2 years ago

3.3.2

2 years ago

3.3.0

3 years ago

3.4.0-alpha.1

3 years ago

3.3.0-beta.2

3 years ago

3.3.0-beta.1

3 years ago

3.3.0-beta.4

3 years ago

3.3.0-beta.3

3 years ago

3.3.0-alpha.11

3 years ago

3.2.6

3 years ago

3.2.5

3 years ago

3.2.4

3 years ago

3.3.0-alpha.6

3 years ago

3.3.0-alpha.9

3 years ago

3.3.0-alpha.8

3 years ago

3.3.0-alpha.7

3 years ago

3.3.0-alpha.10

3 years ago

3.2.2

3 years ago

3.2.1

3 years ago

3.2.0

3 years ago

3.3.0-alpha.2

3 years ago

3.3.0-alpha.1

3 years ago

3.2.3

3 years ago

3.3.0-alpha.5

3 years ago

3.3.0-alpha.4

3 years ago

3.3.0-alpha.3

3 years ago

3.2.0-alpha.13

3 years ago

3.2.0-alpha.14

3 years ago

3.2.0-alpha.11

3 years ago

3.2.0-alpha.12

3 years ago

3.2.0-beta.5

3 years ago

3.1.0

3 years ago

3.1.0-beta.2

3 years ago

3.1.0-beta.3

3 years ago

3.1.0-beta.4

3 years ago

3.1.0-beta.5

3 years ago

3.1.0-beta.6

3 years ago

3.1.0-alpha.10

3 years ago

3.1.0-alpha.11

3 years ago

3.1.0-alpha.12

3 years ago

3.1.0-alpha.9

3 years ago

3.1.0-alpha.5

3 years ago

3.1.0-alpha.6

3 years ago

3.1.0-alpha.7

3 years ago

3.1.0-alpha.8

3 years ago

3.0.1

3 years ago

3.2.0-alpha.4

3 years ago

3.2.0-alpha.5

3 years ago

3.2.0-alpha.6

3 years ago

3.2.0-alpha.7

3 years ago

3.2.0-alpha.8

3 years ago

3.2.0-alpha.9

3 years ago

3.2.0-alpha.1

3 years ago

3.2.0-alpha.2

3 years ago

3.2.0-alpha.3

3 years ago

3.2.0-alpha.10

3 years ago

3.2.0-beta.4

3 years ago

3.2.0-beta.2

3 years ago

3.2.0-beta.3

3 years ago

3.2.0-beta.1

3 years ago

3.1.0-beta.1

3 years ago

3.1.0-alpha.1

3 years ago

3.1.0-alpha.2

3 years ago

3.1.0-alpha.3

3 years ago

3.1.0-alpha.4

3 years ago

3.0.0-beta.3

3 years ago

3.0.0-beta.4

3 years ago

3.0.0

3 years ago

3.0.0-alpha.7

3 years ago

3.0.0-alpha.6

3 years ago

3.0.0-alpha.9

3 years ago

3.0.0-alpha.8

3 years ago

3.0.0-alpha.3

3 years ago

3.0.0-alpha.5

3 years ago

3.0.0-alpha.4

3 years ago

2.4.0

4 years ago

3.0.0-beta.1

3 years ago

3.0.0-beta.2

3 years ago

2.3.3

4 years ago

2.4.0-beta.3

4 years ago

2.4.0-beta.2

4 years ago

2.4.0-beta.1

4 years ago

3.0.0-alpha.1

3 years ago

3.0.0-alpha.2

3 years ago

2.4.0-alpha.2

4 years ago

2.4.0-alpha.1

4 years ago

2.4.0-alpha.4

4 years ago

2.4.0-alpha.3

4 years ago

2.4.0-alpha.6

4 years ago

2.4.0-alpha.5

4 years ago

2.4.0-alpha.8

4 years ago

2.4.0-alpha.7

4 years ago

2.3.3-beta.1

4 years ago

2.3.3-alpha.2

4 years ago

2.3.3-alpha.1

4 years ago

2.3.0

4 years ago

2.3.2

4 years ago

2.3.1

4 years ago

2.3.1-beta.1

4 years ago

2.3.1-alpha.1

4 years ago

2.2.0-alpha.10

4 years ago

2.2.0

4 years ago

2.3.0-beta.1

4 years ago

2.3.0-beta.4

4 years ago

2.3.0-beta.2

4 years ago

2.3.0-beta.3

4 years ago

2.2.0-alpha.8

4 years ago

2.2.0-alpha.9

4 years ago

2.2.0-beta.5

4 years ago

2.2.0-beta.6

4 years ago

2.2.0-beta.7

4 years ago

2.3.0-alpha.2

4 years ago

2.3.0-alpha.3

4 years ago

2.3.0-alpha.1

4 years ago

2.3.0-alpha.8

4 years ago

2.3.0-alpha.9

4 years ago

2.3.0-alpha.6

4 years ago

2.3.0-alpha.7

4 years ago

2.3.0-alpha.4

4 years ago

2.3.0-alpha.5

4 years ago

2.3.0-alpha.10

4 years ago

2.3.0-alpha.13

4 years ago

2.3.0-alpha.14

4 years ago

2.3.0-alpha.11

4 years ago

2.3.0-alpha.12

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.2.0-alpha.7

4 years ago

2.2.0-alpha.6

4 years ago

2.2.0-alpha.4

4 years ago

2.2.0-alpha.3

4 years ago

2.2.0-beta.3

4 years ago

2.2.0-beta.4

4 years ago

2.1.0

4 years ago

2.2.0-alpha.2

4 years ago

2.2.0-alpha.1

4 years ago

2.2.0-beta.1

4 years ago

2.2.0-beta.2

4 years ago

2.1.0-beta.2

4 years ago

2.0.6

4 years ago

2.1.0-alpha.5

4 years ago

2.1.0-beta.1

4 years ago

2.1.0-alpha.4

4 years ago

2.1.0-alpha.3

4 years ago

2.0.5-beta.1

4 years ago

2.0.5

4 years ago

2.1.0-alpha.2

4 years ago

2.1.0-alpha.1

4 years ago

2.0.3-alpha.1

4 years ago

2.0.4-beta.1

4 years ago

2.0.4-alpha.1

4 years ago

2.0.3

4 years ago

2.0.4

4 years ago

2.0.2-beta.1

4 years ago

2.0.2

4 years ago

2.0.2-alpha.1

4 years ago

2.0.1-beta.1

4 years ago

2.0.1-alpha.1

4 years ago

2.0.1

4 years ago

2.0.0-alpha.16

4 years ago

2.0.0-alpha.15

4 years ago

2.0.0

4 years ago

2.0.0-beta.5

4 years ago

2.0.0-beta.4

4 years ago

2.0.0-alpha.14

4 years ago

2.0.0-alpha.13

4 years ago

2.0.0-alpha.12

4 years ago

2.0.0-beta.3

4 years ago

2.0.0-alpha.11

4 years ago

2.0.0-alpha.10

4 years ago

2.0.0-alpha.9

5 years ago

1.3.9

5 years ago

2.0.0-beta.2

5 years ago

2.0.0-alpha.7

5 years ago

2.0.0-alpha.8

5 years ago

2.0.0-alpha.6

5 years ago

2.0.0-beta.1

5 years ago

2.0.0-alpha.4

5 years ago

2.0.0-alpha.5

5 years ago

1.3.8-beta.1

5 years ago

1.3.8

5 years ago

2.0.0-alpha.3

5 years ago

2.0.0-alpha.1

5 years ago

2.0.0-alpha.2

5 years ago

1.3.7

5 years ago

1.3.7-beta.1

5 years ago

1.4.0-alpha.4

5 years ago

1.3.5-alpha.1

5 years ago

1.3.3-beta.1

5 years ago

1.3.5-beta.1

5 years ago

1.3.6-beta.1

5 years ago

1.3.6

5 years ago

1.3.5

5 years ago

1.3.4

5 years ago

1.3.3

5 years ago

1.3.4-alpha.1

5 years ago

1.3.4-beta.1

5 years ago

1.3.6-alpha.1

5 years ago

1.3.3-alpha.1

5 years ago

1.3.2-beta.1

5 years ago

1.3.2-alpha.1

5 years ago

1.3.2

5 years ago

1.4.0-alpha.3

5 years ago

1.3.1-beta.1

5 years ago

1.4.0-alpha.2

5 years ago

1.3.1

5 years ago

1.3.0-beta.4

5 years ago

1.4.0-alpha.1

5 years ago

1.3.0

5 years ago

1.3.0-alpha.6

5 years ago

1.3.0-beta.3

5 years ago

1.3.0-alpha.5

5 years ago

1.3.0-alpha.4

5 years ago

1.3.0-beta.2

5 years ago

1.3.0-alpha.3

5 years ago

1.3.0-alpha.2

5 years ago

1.3.0-beta.1

5 years ago

1.2.0

5 years ago

1.3.0-alpha.1

5 years ago

1.2.0-beta.4

5 years ago

1.2.0-beta.3

5 years ago

1.2.0-alpha.6

5 years ago

1.2.0-alpha.5

5 years ago

1.2.0-alpha.4

5 years ago

1.2.0-beta.2

5 years ago

1.2.0-alpha.3

5 years ago

1.2.0-alpha.2

5 years ago

1.2.0-beta.1

5 years ago

1.2.0-alpha.1

5 years ago

1.1.0

5 years ago

1.1.0-beta.1

5 years ago

1.1.0-alpha.2

5 years ago

1.1.0-alpha.1

5 years ago

1.0.0

5 years ago

1.0.0-alpha.8

5 years ago

1.0.0-beta.4

5 years ago

1.0.0-alpha.7

5 years ago

1.0.0-beta.3

5 years ago

1.0.0-alpha.6

5 years ago

1.0.0-beta.2

5 years ago

1.0.0-beta.1

5 years ago

1.0.0-alpha.5

5 years ago

1.0.0-alpha.4

5 years ago

1.0.0-alpha.3

5 years ago

1.0.0-alpha.1

5 years ago