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

Related tags

Spring Boot rivr
Overview

License Javadocs Maven Central

Overview

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

Read our Getting Started to learn more.

The complete Javadoc for Rivr is available online.

You can also get started by trying some of the Rivr sample applications:

You can continue to learn by example with the Rivr cookbook.

FAQ

What is Rivr?

Rivr is a Java library for VoiceXML application development. The developer writes the dialogue as a normal Java program and Rivr takes care of generating VoiceXML documents dynamically during execution and makes user responses available to the dialogue in a synchronous manner.

Rivr is a Java-centric approach. All Java tools and practice can be applied to IVR application development.

What is VoiceXML?

VoiceXML is a W3C standard for interactive voice response, i.e. telephony system interacting with the caller by using speech recognition, DTMF input, recording, speech synthesis, etc.

VoiceXML is primarily targeted at contact center environments and over-the-phone self-service applications.

VoiceXML 2.0 is the specification major version while VoiceXML 2.1 only adds a few more features on top of the 2.0 version.

What is required to develop a VoiceXML application with Rivr?

You should have a Java development environment. Also, you should already be familiar with the Java language and Java Servlets. While not essential at the beginning, it can be very useful to understand some basic notions of VoiceXML such as prompt queuing, barge-in, properties, etc. Since the Rivr model is based on VoiceXML, it is sometimes necessary to understand the VoiceXML layer underneath.

What is required to run a VoiceXML application with Rivr?

You should have:

  1. A VoiceXML-compliant platform (VoiceXML 2.1)
  2. A Java web application server (or minimally a Java Servlet container)
  3. A Java web application (i.e. a WAR file) containing:
    1. the Rivr jar files (rivr-core.jar, rivr-voicexml.jar)
    2. the run-time dependencies
      1. slf4j-api.jar, an SLF4J adapter jar for a given logging framework and the required logging framework jar files.
      2. commons-fileupload.jar
      3. javax.json-api.jar and an implementation (see GlassFish project for the reference implementation)
    3. your Rivr application (minimally a Dialogue class)
    4. the appropriate configuration in web.xml

What benefits Rivr offers?

Rivr allows Java developers to write callflows as programs.

The callflow logic is expressed directly in the code. For example, if the call flow required a question to be asked no more than 3 times, this can be implemented with a simple for loop. No need to fiddle with the VoiceXML Form Interpretation Algorithm (FIA).

All application logic in centralized in the Java code on the server-side.

With Rivr, no dialogue logic resides on the VoiceXML side. Dialogue rules can be expressed and controlled from the Java side. The dialogue state is maintained on the server.

Rivr allows unit and coverage testing.

Since Rivr dialogues are regular Java methods, they can be unit tested as any other regular Java code. It is simple to check with JUnit that a dialogue asks the expected questions and reacts correctly for any simulated user input. By combining the unit tests with a code coverage tool, we can rapidly setup an automated call flow coverage verification solution.

Development of application can start early in the project, even before VoiceXML platform is ready.

Development can start as soon as the dialogue specification is available. Rivr offers a VoiceXML simulation tool, the dialogue runner, which allows developers to interactively test the dialogues they are developing. Unit testing can also starts as soon as we have a working dialogue (which can be within minutes).

Dialogue abstraction, modularity and reuse.

The fact that a dialogue is pure Java code, it's easy to make them abstract. For example, one can define a dialogue as a Java method taking input parameters which will condition the dialogue execution. Those dialogues can be placed into reusable Java packages and shared between applications.

It's even possible to define meta-dialogues, i.e. high-order dialogue composing dialogues together. This level of abstraction is very hard to obtain when using VoiceXML directly but is easily achieved with Rivr.

No additional tools required

Rivr only requires standard Java tools, no special software or other design-time environment. Java already offers tons of tools that can be applied to the Rivr dialogues: debuggers, profilers, coverage tools, javadoc, etc.

Flexibility

Rivr is designed not to get in your way. It can be integrated with any enterprise framework or other existing framework (like Spring). Many points of control has been defined in Rivr, you are never stuck. You can provide your own implementations for many concepts and you can override many classes to fit your custom context.

Rivr even works with VoiceXML proprietary extensions. You can customize generated VoiceXML as required by your VoiceXML platform and exploit vendor-specific features. There are a few ways to do that.

How to get some support or report a bug?

We have an email address for limited support: [email protected]

Also, to report a problem, you can open an issue on GitHub

How to submit a patch?

Send us your pull request on GitHub. It will then be evaluated. Possibly, we will offer a work-around rather than modifying the code base. We will not modify the VoiceXML generation to fit a particular platform unless it can be done in compliance with the VoiceXML 2.1 spec.

Comments
  • The example cookbook 'rivr-cookbook-simple-speech-interaction' always throws Session not found error.

    The example cookbook 'rivr-cookbook-simple-speech-interaction' always throws Session not found error.

    Using Avaya experience portal in a tomcat 8.5 servlet container running on windows. I can't run this example, the error always occurs. When reaching out to: /rivr-cookbook/dialogue/root/4e4e7586-4c7a-4288-b572-bd20afa99986

    [apache-tomcat-8.5.23]: Dec 17, 2018 6:50:15 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [Dialogue] in context with path [/rivr-cookbook] threw exception [Cannot find session.] with root cause com.nuecho.rivr.core.servlet.session.SessionNotFoundException: Unable to find session [4e4e7586-4c7a-4288-b572-bd20afa99986] at com.nuecho.rivr.core.servlet.DialogueServlet.getExistingSession(DialogueServlet.java:512) at com.nuecho.rivr.core.servlet.DialogueServlet.getSession(DialogueServlet.java:495) at com.nuecho.rivr.core.servlet.DialogueServlet.process(DialogueServlet.java:376) at com.nuecho.rivr.core.servlet.DialogueServlet.doPost(DialogueServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source)

    invalid 
    opened by RickeyWard 7
  • Spring boot maven based Rivr sample

    Spring boot maven based Rivr sample

    we are trying to build application to generate voicexml using Spring Boot, looks like sample rivr-cookbook is not working or not loading the dialogue class. Can you please share sample spring boot - maven based project ?

    question 
    opened by D41138761 3
  • Missing namespace attribute in the root vxml node.

    Missing namespace attribute in the root vxml node.

    In the debug log from rivr-voicexml we see Content: <?xml version="1.0" encoding="UTF-8"?><vxml application="/rivr-prompt/root/85cef493-45bf-44d1-9d3f-a312643fd71a" version="2.1" xml:lang="en-US"> The root node is missing namespace attribute.

    The broken vxml goes from dialogues to a VXML browser. It causes faults on IBM Websphere Voice Server.

    bug 
    opened by sjacek 3
  • Speech and DTMF recognition together

    Speech and DTMF recognition together

    We have requirement to ask user to provide zipcode by playing audio "Please say or enter the zip code of your service address." User can either say or type zipcode. Is there any way common recognition logic to receive user input instead of using Speech and DTMF recognition separately or one after another ?

    question 
    opened by D41138761 2
  • how to write java code for return namelist in subdialogue

    how to write java code for return namelist in subdialogue

    we need to return using namelist for a subdialouge in vxml < return namelist="test test2 test3" />

    java - using Return object as below return new Return("namelist", returnValues); or return new Return("return", returnValues);

    is the above code correct to send returnValues as namelist?

    question 
    opened by D41138761 2
  • Avaya Experience Portal tack_trace

    Avaya Experience Portal tack_trace":"c.n.r.c.s.s.SessionNotFoundException: Unable to find session [error]

    Avaya Experience Portal [tack_trace":"c.n.r.c.s.s.SessionNotFoundException:] RivrErrorLog.txt {"ts":"2021-09-08T02:39:45.755Z","logLevel":"ERROR","logMessage":"Servlet.service() for servlet [voiceXmlDialogueServlet] threw exception","logThreadId":"http-nio-8090-exec-3","logClass":"o.a.juli.logging.DirectJDKLog","logMethod":"log","env":{"hostname":"8c30a61321d8","containerName":"containerName_IS_UNDEFINED","containerNamespace":"containerNamespace_IS_UNDEFINED"},"application":{"name":"appName_IS_UNDEFINED","version":"appVersion_IS_UNDEFINED"},"stack_trace":"c.n.r.c.s.s.SessionNotFoundException: Unable to find session [error]\n\tat c.n.r.c.s.DialogueServlet.getExistingSession(DialogueServlet.java:537)\n\tat c.n.r.c.s.DialogueServlet.getSession(DialogueServlet.java:520)\n\tat c.n.r.c.s.DialogueServlet.process(DialogueServlet.java:401)\n\tat c.n.r.c.s.DialogueServlet.doGet(DialogueServlet.java:270)\n\tat c.n.r.v.s.VoiceXmlDialogueServlet.doGet(VoiceXmlDialogueServlet.java:145)\n\tat j.s.http.HttpServlet.service(HttpServlet.java:626)\n\tat j.s.http.HttpServlet.service(HttpServlet.java:733)\n\tat o.a.c.c.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n\tat o.a.c.c.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat o.s.w.f.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n\tat o.s.w.f.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat o.a.c.c.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat o.a.c.c.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat o.s.w.f.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n\tat o.a.c.c.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat o.a.c.c.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat o.s.c.s.i.w.s.TracingFilter.doFilter(TracingFilter.java:68)\n\tat o.s.c.s.a.i.w.LazyTracingFilter.doFilter(TraceWebServletConfiguration.java:121)\n\tat o.a.c.c.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat o.a.c.c.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat o.s.w.f.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n\tat o.a.c.c.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n\tat o.a.c.c.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n\tat o.a.c.c.ApplicationDispatcher.invoke(ApplicationDispatcher.java:710)\n\tat o.a.c.c.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459)\n\tat o.a.c.c.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384)\n\tat o.a.c.c.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)\n\tat o.a.c.c.StandardHostValve.custom(StandardHostValve.java:398)\n\tat o.a.c.c.StandardHostValve.status(StandardHostValve.java:257)\n\tat o.a.c.c.StandardHostValve.invoke(StandardHostValve.java:179)\n\tat o.a.c.v.ErrorReportValve.invoke(ErrorReportValve.java:92)\n\tat o.a.c.c.StandardEngineValve.invoke(StandardEngineValve.java:78)\n\tat o.a.c.c.CoyoteAdapter.service(CoyoteAdapter.java:346)\n\tat o.a.c.h.Http11Processor.service(Http11Processor.java:374)\n\tat o.a.c.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n\tat o.a.c.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:887)\n\tat o.a.t.u.n.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684)\n\tat o.a.t.u.n.SocketProcessorBase.run(SocketProcessorBase.java:49)\n\tat j.u.c.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat j.u.c.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat o.a.t.u.t.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.lang.Thread.run(Thread.java:829)\n"},

    opened by nmvprasad 2
  • mavenCentral is not supported in Gradle 5.3 or latest

    mavenCentral is not supported in Gradle 5.3 or latest

    Hi - mavenCentral pom tags are not recognized in Gradle latest version. Could you please guide on How to substitute with? maven { url = "http://repo.maven.apache.org/maven2" }


    Files: rivr-master\build-instructions.md rivr-master\build.gradle rivr-master\rivr-voicexml-dialogue-runner\build.gradle

    repositories { mavenCentral() } repositories { mavenCentral{ pom.project{ packaging 'jar' } } } repositories { mavenCentral { pom.project { packaging 'war' } } }

    mavenDeployer(name: 'mavenCentral')

    bug 
    opened by sgana123 2
  • Support session replication for HA deployments

    Support session replication for HA deployments

    I'm looking at the way to deploy code that uses rivr library in the multi-node environment for high availability purposes - the requirement is for a conversation session to survive a node crash/restart.

    From what I can see DialogueServlet has support for Servlet's HttpSession and would save a Session object in HttpSession, which could be made persistent or stored out-of process (via spring-session library, for example). In my tests, when configured properly HttpSession would survive node restart, but if I read code correctly SessionContainer never reads from HttpSession - only from local sessions map (mSessions) so even so HttpSession is present after restart conversation cannot continue because of SessionNotFoundException.

    I just want to confirm that what I need is indeed not supported by the current implementation? Thanks.

    wontfix 
    opened by maximdim 2
  • 404 Error while calling the voice app after deployment

    404 Error while calling the voice app after deployment

    Hi Jean-Philippe,

    I was following the steps given to bootstrap the sample application given from the cookbook. I had deployed the application in Heroku and gave the deployed application URL in Voxeo's voice URL. When I call the application, I get 404 Error. Below is the excerpt from the log

    Apr 11 22:12:03 GMT 2017 bro222.orl.voxeo.net CCX 187807 4e1be661f023b2e0b43e105fe4823285 0 1 Session log: dialog failed to start! Reason=Failed fetch with code: 404 (Not Found),\n URL: http://localhost:8080/rivr-cookbook-1.0.0/?session.callerid=4029357733&session.accountid=187807&session.sessionid=6e9355ceee103f588a852e48092d2dd0&session.parentsessionid=4e1be661f023b2e0b43e105fe4823285&session.virtualplatform=Staging-Nuance&session.calledid=9990109941

    I had also attached the log file of my call 2017-04-11-2200.txt

    Thanks, Karthik.

    invalid 
    opened by karthikkumarna 2
  • Unit Testing in VoiceXML

    Unit Testing in VoiceXML

    Hi ,

    May I know how is Unit testing performed over after building an VoiceXML Application.

    It is given that ,its capable of doing unit testing,but I dont undestand where and how it is done.?

    Thanks,

    question 
    opened by Tritrita 1
  • message is not getting interrupted even if barge-in is set to true

    message is not getting interrupted even if barge-in is set to true

    https://github.com/nuecho/rivr-cookbook/blob/message-barge-in/src/main/java/com/nuecho/rivr/cookbook/dialogue/Dialogue.java

    we referred the above sample for user interruption while audio/message is playing, looks its not working. we did as below as we dont need text message (just declared with single space) to be played. but message in the interaction is not getting interrupted even if barge-in is set to true. Anything is missing ?

    String messageText = " "; Message message = new Message("barge-in-message", new SpeechSynthesis(messageText)); message.setBargeIn(true); DialogueUtils.doTurn(message, context);

        DtmfRecognition configuration = new DtmfRecognition(new GrammarReference("builtin:dtmf/digits"));
        Interaction interaction = interaction("interaction")
                .addPrompt(configuration, new SpeechSynthesis("Enter a digit."))
                .build(configuration, Duration.seconds(5));
        DialogueUtils.doTurn(interaction, context);
    
    opened by D41138761 0
  • InterDigitTimeout property for multiple grammar files

    InterDigitTimeout property for multiple grammar files

    Hi Team, I am keeping two grammar files to recognize digits in dtmf mode.

    1. GrammarItem 1 - to understand combination of 5 digits (0 to 9).
    2. GrammarItem 2 - to understand "1"

    Currently, when I entered "12345", second grammar file recognizing this and proceeding as it starts with "1".Rest of the inputs working fine except starting with "1". Tried setting inter digit timeout as well, but not worked out in this case.

    "dtmfRecognition.setInterDigitTimeout(Duration.seconds(2));"

    Please help on this!

    opened by Jayapriya97 2
  • what is default time out set for rivr application

    what is default time out set for rivr application

    One of IVR application is transfering call using subdialog option to our application developed using Rivr framework. But they are getting "Dialog exiting" response from our application , even though rivr application logs shows control still processing the request. So before rivr application retrun the result back the cller application is terminating call saying they got the "Exit" response.

    Is there any default timeout defined in thie rivr framework servlet "VoiceXmlDialogueServlet"

    question 
    opened by D41138673 10
  • Subdialogue  - Request method 'POST' not supported

    Subdialogue - Request method 'POST' not supported

    VoiceXmlInputTurn inputTurn = DialogueUtils.doTurn(subdialogueCall, context);

    while we are calling the subdialogue (sample you gave in the examples) - getting the below exception [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]

    invalid 
    opened by D41138761 1
  • How to add audio file in the prompt as part of Interaction

    How to add audio file in the prompt as part of Interaction

    How to add audio file in the prompt as part of Interaction

    Interaction interaction = interaction("get-dtmf") .addPrompt(new SpeechSynthesis("say a number between 5 and 10 digits long."))

    Also how to use the grammar file while taking user input and collecting user input by listening to his voice

    question 
    opened by nmvprasad 1
Releases(v1.0.12)
Java based open source static site/blog generator for developers & designers.

JBake JBake is a Java based open source static site/blog generator for developers. Documentation Full documentation is available on jbake.org. Contrib

JBake 1k Dec 30, 2022
Drools is a rule engine, DMN engine and complex event processing (CEP) engine for Java.

An open source rule engine, DMN engine and complex event processing (CEP) engine for Java™ and the JVM Platform. Drools is a business rule management

KIE (Drools, OptaPlanner and jBPM) 4.9k Dec 31, 2022
Write enterprise Bitcoin applications with Spring Boot.

Write enterprise Bitcoin applications with Spring Boot. Starter projects with multiple Bitcoin related modules that you can include in your application Google Colab

DE MINING 3 Dec 11, 2022
JSON Web Token implementation for Java according to RFC 7519. Easily create, parse and validate JSON Web Tokens using a fluent API.

JWT-Java JSON Web Token library for Java according to RFC 7519. Table of Contents What are JSON Web Tokens? Header Payload Signature Features Supporte

Bastiaan Jansen 6 Jul 10, 2022
A simple and lightweight Minecraft GUI API for developers to use.

Current Version: 1.0.0 Requirements: - You must be using PaperMC or a fork of it (This will not work with just Spigot/Bukkit! - Curently this API only

Sammy Aknan 2 May 14, 2022
Android Library to create Lottie animation view dialog easily with a lot of customization

LottieDialog Android Library to create Lottie animation view dialog easily with a lot of customization Why you should use Lottie Dialog You have no li

Amr Hesham 39 Oct 7, 2022
Ethylene is a open-source, lightweight, general-purpose compatibility layer standing between the developer and the chaotic world of configuration file formats.

Ethylene Ethylene is a open-source, lightweight, general-purpose compatibility layer standing between the developer and the chaotic world of configura

Steank 7 Aug 9, 2022
🕊️ 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

null 1.2k Dec 27, 2022
There are two challenges one is to create a backend api the other is to create a frontend application to consume the public data api devall.

Sobre | Desafio | Resolução | Tecnologias | Execução | Itexto desafio tecnico Sobre os Desafios existem dois desafios um é criar uma api backend o out

fabricio S Miranda 1 Oct 18, 2021
Multi-OS Engine: Create iOS Apps in Java (or Kotlin ... etc.)

Multi-OS Engine Overview Multi-OS Engine provides a Java runtime and Java interfaces to iOS platform API to develop native iOS applications with nativ

Multi-OS Engine 561 Dec 22, 2022
💡极致性能的企业级Java服务器框架,RPC,游戏服务器框架,web应用服务器框架。(Extreme fast enterprise Java server framework, can be RPC, game server framework, web server framework.)

?? 为性能而生的万能服务器框架 ?? Ⅰ. zfoo简介 ?? 性能炸裂,天生异步,Actor设计思想,无锁化设计,基于Spring的MVC式用法的万能RPC框架 极致序列化,原生集成的目前二进制序列化和反序列化速度最快的 zfoo protocol 作为网络通讯协议 高可拓展性,单台服务器部署,

null 1k Jan 1, 2023
Cloud Native and Low Code Platform to create FullStack web Admin applications in minutes

Cloud Native and Low Code Platform to create FullStack web Admin applications in minutes ✨ Features & Technologies REST API generator Low Code CRUD &

Gemini Framework 171 Dec 26, 2022
Core module for Forgiva Enterprise connecting Forgiva Server to Forgiva Webclient.

Forgiva Integrator INTRODUCTION Forgiva Enterprise is a set of components for a secure and efficient method of re-generation of passwords each time th

Sceptive 13 Oct 18, 2022
Alibaba Cloud Dedicated KMS Transfer SDK for Java can help Java developers to migrate from the KMS keys to the Dedicated KMS keys.

Alibaba Cloud Dedicated KMS Transfer SDK for Java Alibaba Cloud Dedicated KMS Transfer SDK for Java can help Java developers to migrate from the KMS k

Alibaba Cloud 3 May 12, 2022
Community-Driven Game Server Development solution for Java Developers based on DEEPINTHINK MagOKO Project.

MagOKO Stack Community-Driven Game Server Development solution for Java Developers based on DEEPINTHINK MagOKO Project. License Copyright 2021-present

DeepInThink Community 10 Jun 1, 2021
My solutions for the MongoDB for Java Developers course

Welcome to M220J Disclaimer: The dependencies and versions in this project are not maintained. This project is intended for educational purposes and i

Salih Candir 3 Jun 26, 2022
RR4J is a tool that records java execution and later allows developers to replay locally.

RR4J [Record Replay 4 Java] RR4J is a tool that records java execution and later allows developers to replay locally. The tool solves one of the chall

Kartik  kalaghatgi 18 Dec 7, 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. This is a repository that contains the Java Source Code for Google App Engin

Google Cloud Platform 167 Jan 2, 2023
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