npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@5minds/processcube_engine_sdk

v7.2.0-renovate-03b2ff-miuu9bxw

Published

Software development kit for the Engine.

Downloads

6,346

Readme

Engine SDK

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

Verwendung des SDKs

Das SDK kann über npm bezogen werden:

npm i --save @5minds/processcube_engine_sdk

Beispiel:

import { Engine, EngineEvent, OnLoad } from '@5minds/processcube_engine_sdk';

export const onLoad: OnLoad = (engine: Engine) => {
  engine.registerEventMiddleware(onEngineEvent);
};

function onEngineEvent(event: EngineEvent): Promise<void> {
  return Promise.resolve();
}

Extensions in die Engine einbinden

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

Sowohl beim Start über die CLI:

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

Als auch beim Start als embedded Software:

await Engine.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}/.processcube/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": {
    "@5minds/processcube_engine_sdk": "^3.3.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 Engine-Objekt als Parameter aufgerufen wird. In diesem Objekt finden sich alle Engine Funktionen, die von einer Extension genutzt werden können.

export const onLoad: OnLoad = (engine: Engine) => {
  engine.registerEventMiddleware(onEngineEvent);
};

Interaktion mit der Engine

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

registerEventMiddleware

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

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

import { Engine, EngineEvent, OnLoad } from '@5minds/processcube_engine_sdk';

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

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

EngineActions

Die Engine erlaubt mittels EngineActions ein Eingreifen in die Prozessausführung. Eine Middleware kann eine, keine oder mehrere EngineActions zurückgeben, die dann von der Engine nacheinander ausgeführt werden, bevor die Prozessausführung fortgesetzt wird.

Eine EngineAction ist ein Datenobjekt, dass mindestens eine Id enthält, die die Art der EngineAction festlegt und weitere EngineAction-spezifische Properties, die für die Ausführung der EngineAction benötigt werden.

import { Engine, EngineEvent, LogEventType, OnLoad } from '@5minds/processcube_engine_sdk';

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

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

  if (event.eventType === LogEventType.OnFlowNodeExited) {
    // Gibt die EngineAction 'ModifyTokenPayload' zurück
    return {
      id: 'ModifyTokenPayload',
      tokenPayload: { result: 'token was modified' },
    };
  }
}

Folgende EngineActions werden derzeit unterstützt:

ModifyTokenPayload Action

Die ModifyTokenPayload Action kann verwendet werden um den Payload des aktuellen Tokens zu verändern. Daher kann die ModifyTokenPayload Action nur verwendet werden, wenn das auslösende EngineEvent zu einer FlowNode gehört. Solche Events fangen immer mit OnFlowNode an (bspw.: OnFlowNodeEntered). Sollte eine ModifyTokenPayload Action für ein Event das nicht zu einer FlowNode gehört zurückgegeben wird, wird die Action nicht ausgeführt und ein Fehler wird gelogt.

Eine ModifyTokenPayload Action besteht aus 2 Eigenschaften:

  1. Die id, die immer ModifyTokenPayload entspricht
  2. Die tokenPayload, der den payload des aktuellen Tokens der entsprechenden FlowNode ersetzt.
{
  id: 'ModifyTokenPayload',
  tokenPayload: {example: 'token payload'},
}

Werden mehrere ModifyTokenPayload Actions zurückgegeben, überschreibt der letzte TokenPayload immer die Vorherigen.

Weiterführende Links