Giter VIP home page Giter VIP logo

application-engine's Introduction

Netgrif Application Engine

License Java Petriflow 1.0.1 GitHub release (latest SemVer) build Quality Gate Status Coverage Known Vulnerabilities

Next-generation end-to-end low code platform.

Application Engine is a workflow management system fully supporting low-code language Petriflow. Application Engine (NAE for short) is based on Spring framework with fully complaint Petriflow language interpreter. NAE runs inside the Java Virtual Machine. It can be embedded into Java 11 project or used as a standalone process server. On top of the process server, NAE provides additional components to make integration to your project/environment seamless.

Components

Netgrif Application Engine (or NAE for short) consists of several key components:

  • Workflow engine
  • Authentication and authorization - User management and application-wide permissions
    • LDAP - Integration to authentication solution via LDAP protocol.
    • Organization structures - Managing organization structure for application users
  • Business rules engine - Rules execution across whole application based on Drools
  • Logging and auditing - Logging to text file and Event/Audit log generation to the main database
  • Mail service - Mail client for sending and receiving emails
  • Extension services
    • PDF generator - Generate PDF from process form / task
    • QR code generator - Generate QR code from process data

Requirements

The Application engine has some requirements for runtime environment. The following table is summary of requirements to run and use the engine:

Name Version Description Recommendation
Java 11+ Java Development Kit OpenJDK 11
Redis 5+ Key-value in-memory database used for user sessions and caching Redis 6.2.6
MongoDB 4.4+ Main document store database MongoDB 4.4.11
Elasticsearch 7.17+ Index database used for better application search Elasticsearch 7.17.3

If you are planning on developing docker container based solution you can use our docker-compose configuration to run all necessary databases to develop with NAE.

Installation

Running as standalone

You can start using the NAE by its self and then upload your processes via API. You run the NAE from JAR (Java Archive) file or as docker container.

Running a JAR file

To run the engine from the jar file you can use a release package available from this repository. The latest release package you can download from here. Before you start you must generate own RSA key pair for session tokens, you can follow this guide.

To quickly start working with the engine just write the following commands to download, unzip, generate security keys and start:

$ wget -O nae.zip https://github.com/netgrif/application-engine/releases/latest
$ unzip nae.zip
$ cd nae
$ cd src/main/resources/certificates && openssl genrsa -out keypair.pem 4096 && openssl rsa -in keypair.pem -pubout -out public.crt && openssl pkcs8 -topk8 -inform PEM -outform DER -nocrypt -in keypair.pem -out private.der && cd ../../../..
$ java -jar nae.jar

Only generate security keys:

$ cd src/main/resources/certificates && openssl genrsa -out keypair.pem 4096 && openssl rsa -in keypair.pem -pubout -out public.crt && openssl pkcs8 -topk8 -inform PEM -outform DER -nocrypt -in keypair.pem -out private.der && cd ../../../..

By default, the engine assumes that all databases are running locally. If you are running required database on server or on different ports, you can pass these settings as arguments to NAE.

$ java -jar nae.jar --spring.data.mongodb.uri=mongodb://localhost:27017/nae --spring.data.elasticsearch.url=localhost --spring.session.redis.host=localhost

Running as Docker container

You can also use docker to run the engine from the official image on Docker hub.

$ docker pull netgrif/application-engine
$ docker run -d -p 8080:8080 netgrif/application-engine

As the engine connects by default to locally ran databases for more precise configuration we recommend to use Docker compose file or Kubernetes manifest to run whole stack all at once.

Embedding

The Application Engine can be used inside your java application as a java library. The engine is written in Spring framework, so you can seamlessly integrate it to your Spring Boot application. The engine can be linked as a Maven dependency:

<dependency>
    <groupId>com.netgrif</groupId>
    <artifactId>application-engine</artifactId>
</dependency>

Other projects

Application Builder

For creating processes in Petriflow language try our free Application Builder on https://builder.netgrif.com. You can start from scratch or import existing process in BPMN 2.0 and builder automatically converts it into Petriflow.

NCLI (Coming soon)

If you need help with setting up project or looking for tool to automate your developer work with NAE based applications, take a look on NCLI (Netgrif Command Line Interface).

Reporting issues

If you find a bug, let us know at Issue page. First, please read our Contribution guide

License

The software is licensed under NETGRIF Community license. You may be found this license at the LICENSE file in the repository.

application-engine's People

Contributors

daniell7 avatar hofericao avatar kovy95 avatar luksic-netgrif avatar machacjozef avatar makannetgrif avatar martinkranec avatar mazarijuraj avatar minop avatar petroviclubos avatar renczesnetgrif avatar renczesstefan avatar retoocs avatar rudeboyxx avatar samrack avatar samuelpalaj avatar timbez avatar tuplle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.