Core SDK

What is the Core SDK

It all started with the framework. The Core SDK is the heart of our automation framework and is responsible for executing automated workflows in a secure, traceable way. It comes with a rich variety of basic components which can directly be used to create your own applications. The SDK also offers many possibilities to customize or provide your own components, when a more specific automation is needed.

  • Build on Java 11
  • Rich API which is extremely
    • Modular – Old / deprecated components can be replaced without rewriting whole applications.
    • Customizable – Write your own base components for your specific automation needs.
    • Extendable – Use the given SPI to extend the functionality of the core.
    • Reusable – Reuse our / your base components inside new applications.

What are its Base Components

  • Engine – is the base component which executes a Model.
  • Model – is the “workflow” which will be executed by the engine. It describes the automation as a “sequence” of Commands.
  • Model Interpreter – the Model Interpreter is responsible for mapping specific models (like BPMN) to our generic Model. It also determines how the Model should behave and be executed at runtime.
  • Command – is the smallest unit of a Model. They execute some specific Task like “write x to file y”. Once written they can be reused over & over again.
  • Command Interpreter – parameterizes and executes specific Commands. It is possible to create Commands in different languages (Java, Kotlin) or standards like Open API.
  • Command Pool & Collectors – provides the needed Commands to the Engine at runtime while executing the Model. For example there are Command Pools which can fetch all your Commands from a Maven Repository or from a local directory.
  • Credential Manager – manages and provides all credentials which are needed by a Command to connect to a specific tool. The Manager does not connect to any tool itself, this is still done by the specific Command(Service).
  • Persistence Service – stores and provides all data which are created or needed by the Commands at runtime.
  • FuSe (Functional Security) – is a component which can trace specific data of the Model execution. This allows to do specific monitoring of the executions done by the Engine.

How do they work together

  1. First a Workflow in a specific format like BPMN (or any other), will be passed to the Engine.
  2. The registered Model Interpreter will parse this Workflow to a generic Model.
  3. The Model consists of Commands which will be loaded by the Command Pool.
  4. If all Commands of the Model are available, the execution of the Model begins or resumes until all Commands are finished.
    1. Dependent on the Model and the last execution state, the Engine adds one or multiple Commands to the operation queue or finishes the execution.
    2. If the Engine is not finished, each queued Command will be parameterized and executed by its specific Command Interpreter.
    3. The Command then will do its task until its finished or failed.
    4. At the end of this loop, all results of the last Command execution are written back to the Persistence Service.

You have specific automation needs? No Problem!

Create your own Applications based on our / your Core SDK base components

Once written, each base component and Command can be reused in any application. This means that specific requirements on the part of the user or the target platform can be implemented with ease.

Create your own base components by implementing our APIs

Some Examples

  • You want to execute a different Model specification than BPMN? Write your own Model Interpreter.
  • You want to save all created data inside a specific database? Write your own Persistence Service.
  • Your credentials are hosted by a central tool and you want use it? Write your own Credential Manager.
  • You want to fetch your Commands from another artifact repository? Write your own Command Pool & Collector.
  • You want to support Commands written in a different language or standard? Write your own Command Interpreter.
  • The Engine should work in a different or extended way? Write your own Engine or register Observers & Callbacks to extend it.