Kyrestia, named after Kyrestia the Firstborne, is a process engine supporting mainstream process definition standards.

Related tags

Spring Boot kyrestia
Overview

Kyrestia

Kyrestia, named after Kyrestia the Firstborne, is a process engine supporting mainstream process definition standards. It is not only lightweight, easy and fast to use, but also has plenty of advanced features. Kyrestia can be integrated into large-scale web applications and microservices to orchestrate business processes, as well as used by offline systems in traditional scenarios.

Features

  • Consistency: Executions are always in a consistent status when visited by any thread at any time.
  • Durability: Data of executions can be persisted and restored for later usage.
  • Configurability: Behaviors are customizable by modifying settings.
  • More features to be added...

Philosophy

  1. KISS: Keep it simple and stupid, and keep the word.
  2. Standalone: Literally no third-party JARs.
  3. Standardization: Embrace BPMN 2.0.
  4. Extensibility: Can be extended by implementing extension points.
  5. Performance: Pure memory operations and no redundant runtime objects created.

User Guide

Native Interface (Recommended)

Maven Dependency

<dependency>
    <groupId>clan.midnightgroupId>
    <artifactId>kyrestia-nativeartifactId>
    <version>1.0.0version>
dependency>

Sample Code Snippet

Define BPMN process and execute

KyrestiaEngine engine = new KyrestiaEngine();
InputStream inputStream = Thread.currentThread().getContextClassLoader()
        .getResourceAsStream("your-bpmn.xml");
// load process definition to memory
engine.deployBPMN(inputStream);
// create an execution
Execution execution = engine.execute(deployedProcessId, initialParameters);
execution.run();

Persist execution

// create the persistence object from an execution
ExecutionPO executionPO = engine.convertExecutionForPersistence(execution);
// restore from an persistence object
execution = engine.restore(executionPO);
execution.proceed();

Integration with Spring

Config Kyrestia engine

@Configuration
public class YourConfiguration {
    @Autowired
    private ApplicationContext applicationContext;
    
    @Bean
    public KyrestiaEngine kyrestiaEngine() {
        Configuration.implementationAccessor = new ImplementationAccessor() {
            @Override
            public Object access(String identifier) {
                Class clazz = ClassUtils.loadClass(identifier);
                return applicationContext.getBean(clazz);
            }
        }
        KyrestiaEngine engine = new KyrestiaEngine();
        InputStream inputStream = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("your-bpmn.xml");
        engine.deployBPMN(inputStream);
        return engine;
    }
}

Delegate BPMN task

@Component
public class DelegationTest implements Delegation {
    @Override
    public void execute(DelegationContext context) {
        // business logic
    }
}

Acknowledgement

Inspired by Alibaba's SmartEngine

You might also like...

Deploys an agent to fix CVE-2021-44228 (Log4j RCE vulnerability) in a running JVM process

-- This repository has been archived -- Further development of this tool will continue at corretto/hotpatch-for-apache-log4j2. Thanks for sharing, com

Dec 23, 2021

Reindex - application for visualize, optimize and automate your Elasticsearch reindex process

Welcome to reindex application for Elasticsearch This application will help you to reindex one or more existing indices, into the local or remote Elas

Jan 2, 2023

Quarkus extension for launching an in-process Wiremock server

Quarkus extension for launching an in-process Wiremock server

Quarkus extension for running Wiremock in DEVELOPMENT mode This extension is currently not published in any maven repository. If you want to test this

Dec 30, 2022

A Java-based template project for the FastJ Game Engine.

A Java-based template project for the FastJ Game Engine.

FastJ Java Template Program Requirements Java 16 JDK Basic understanding of Java Initial Setup Download the Template You have a few options for gettin

May 15, 2022

Realtime Data Processing and Search Engine Implementation.

Realtime Data Processing and Search Engine Implementation.

Mutad The name Mutad is a reverse spelling of datum. Overview An implementation of a real-time data platform/search engine based on various technology

Aug 4, 2022

🕊️ The world's most advanced open source instant messaging engine for 100K~10M concurrent users https://turms-im.github.io/docs

🕊️ The world's most advanced open source instant messaging engine for 100K~10M concurrent users https://turms-im.github.io/docs

简体中文 What is Turms Turms is the most advanced open-source instant messaging engine for 100K~10M concurrent users in the world. Please refer to Turms D

Dec 27, 2022

Sceneform React Native AR Component using ARCore and Google Filament as 3D engine. This the Sceneform Maintained Component for React Native

Sceneform React Native AR Component using ARCore and Google Filament as 3D engine. This the Sceneform Maintained Component for React Native

Discord Server Join us on Discord if you need a hand or just want to talk about Sceneform and AR. Features Remote and local assets Augmented Faces Clo

Dec 17, 2022

Google App Engine Standard Environment Source Code for Java 8 and Java11

 Google App Engine Standard Environment Source Code for Java 8 and Java11

Google App Engine Standard Environment Source Code for Java 8 and Java11. This is a repository that contains the Java Source Code for Google App Engin

Jan 2, 2023

Rivr is a lightweight open-source dialogue engine enabling Java developers to easily create enterprise-grade VoiceXML applications.

Overview Rivr is a lightweight open-source dialogue engine enabling Java developers to easily create enterprise-grade VoiceXML applications. Read our

Jun 27, 2022
Releases(1.0.0)
Owner
Weiran Wu
Weiran Wu
Render After Effects animations natively on Android and iOS, Web, and React Native

Lottie for Android, iOS, React Native, Web, and Windows Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations expo

Airbnb 33.5k Jan 3, 2023
Very briefly capturing some of new/ update in API that were introduced after Java 8 that may come handy for dev folks while programming

Very briefly capturing some of new/ update in API that were introduced after Java 8 that may come handy for dev folks while programming. Also have created tests demonstrating those APIs and playaround with it.

Jayaramanan Kumar 3 Jan 24, 2022
Allows changing of hurt animation modifier, changing how much the user's camera moves after the player being hurt.

Hurt Animation Modifier Allows changing of hurt animation modifier, changing how much the user's camera moves after the player being hurt. Credit to W

null 5 May 17, 2022
fork of autoGG for fabric to pay respect to Techno after games.

AutoTechno Description: This mod is a tribute to the youtuber Technoblade and to their family which takes on a new spin to the usual auto gg mods by i

ZtereoHYPE 4 Jul 23, 2022
The first Java Actor System supporting fibers from Project Loom

Fibry Fibry is an experimental Actor System built to be simple and flexible. Hopefully, it will also be fun to use. Fibry is the first Java Actor Syst

Luca Venturi 196 Dec 26, 2022
A Spring Boot Camel boilerplate that aims to consume events from Apache Kafka, process it and send to a PostgreSQL database.

SPRING-BOOT CAMEL BOILERPLATE This is a Spring-Boot Camel Application model that you can use as a reference to study or even to use in your company. I

Bruno Delgado 45 Apr 4, 2022
ZeroTurnaround Process Killer

ZT Process Killer Continuous Integration Quick Overview The project was created in ZeroTurnaround to have a stable base functionality of stopping runn

ZeroTurnaround 114 Dec 29, 2022
ZeroTurnaround Process Executor

ZT Process Executor Continuous Integration Quick Overview The project was created to merge similar functionality of projects at ZeroTurnaround into a

ZeroTurnaround 817 Dec 29, 2022
A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.

Flowable (V6) Maven Central: Docker Images: License: Homepage: https://www.flowable.org/ flowable / flowəb(ə)l / a compact and highly efficient workfl

Flowable 6k Jan 7, 2023
Squadio-App is a Users-Accounts financial system. exposes Rest APIs with JWT authentication/Authorization process .

squadio-app Description Squadio-App is a Users-Accounts financial system. exposes Rest APIs with JWT authentication/Authorization process . How to Run

Bashar Othman 1 Jan 29, 2022