Skip to content

Components Overview

Iak edited this page Feb 2, 2023 · 1 revision

In the following picture you can see the component diagram of the PROCEED Engine.

PROCEED-Engine_Gesamt

As you can see there is a general separation between a Universal and a Native part. This is due to the technical goal of being platform-independent. The former consists of components written in pure, standardized JavaScript. This code can be executed in every JS runtime, e.g. a browsers JS runtime.

Additionally there are special PROCEED libraries in the Universal part that can be used to get native functionalities like opening a web server or storing data. This libs are the intermediate layer, that connects the Universal with the Native part - we call it the Dispatcher.

The Native part is plattform-specific. It realizes the Dispatcher libraries and can be written in different languages, e.g. Java for Android, Node.js for Win/Linux/OSX, etc. For further information see the Cross Platform Page.

The rest of the page describes the functionalities of every module. As a guiding principle, every module is responsible for its own data. So accessing the data directly (e.g. via the Dispatcher Libraries) is not allowed -- the request should always be routed through the modules offered API.

Process Manager Module

The Process Manager is responsible for executing the BPMN processes. So it manages the process instances. It does not manage any endpoints for storing, deleting or starting a process (the Distribution Module is responsible for that).

The Process Manager contains the actual BPMN execution engine. This is currently a fork of the ProcessHub Engine. Since this execution engine does not completely fit for our application as a Distributed Process Engine, there are several additional components that manages the execution of the processes. (And it is one reason why we will replace it in future by our own development.)

management.js is responsible for the parallel execution of multiple processes at a time. engine.js executes one process at a time. It contains a separation part which splits the process into multiple pieces. It then analyses task by task if the engine is capable of running the next step. If yes, it triggers the execution in the BPMN engine. If not, it gives this information to the Distribution Module, which handles the further deployment and execution.

PROCEED-Engine_process_separation

Furthermore, the Process Manager module contains module.js. This is the starting point for the universal part. It initializes all other modules and components, starting with the Configuration and ending with the UI-Manager.

Process Distribution Module

Receives, manages and redistributes the processes. It offers endpoints for adding all process relevant data, as well as to start, stop and delete a process. Furthermore it handles the selection of the next device, if dynamic deployment is used.

Machine Module

The Process Manager is responsible for collecting information about the machine, the PROCEED engine and the processes on the system. It offers an endpoint for requesting this data from a remote system and is hosting a local website, which displays some of the information. It also manages the configuration of the system.

Capability Module

Handles the local capabilities of a machine. It interprets their semantic description, manages all capabilities of a machine and enables via an endpoint the retrieving of this data.

UI Module

The UI Module is responsible for displaying the tasklist and adding/deleting user tasks to it. Furthermore it displays a status and configuration page.

This is the Dev Wiki

Clone this wiki locally