Ngin - Java Workflow Automation engine. It runs on Java and uses Jini, JavaSpaces, BeanShell and a logging utility called Lumberjack. The entire project is under the GNU General Public License. Which means the complete source code is freely available for download/modification. Even if you don`t find the entire application useful, you might find the utilities I have designed and made use of in the application like - Threadpool, Objectpool and the best of all  - a Jini Service lookup utility with smart lookahead caching.

The Ngin  package is written completely in Java 1.3. It is a workflow automation application which connects to a host of disparate Services on behalf of the requesting application and then controls the sequence of information flow among the selected Services. This sequence of  flow of  information can be controlled dynamically by the use of Scripts. These Scripts are  Java like code which do not have to be compiled for each Workflow task. I have used BeanShell - a superb package which interprets Java like code. "Java like" because it allows us to make use of all the features provided by the regular Java programming language and also incorporates features commonly found in scripted languages like JavaScript. This allows a great degree of control over the flow of  information between the chosen Services.

The Services can be anything - like say, a network printer  or  a program which  queries a database or  a program which can send e-mail. The package comes with support for Jini Services by default. But I have designed it in such a way that any communication protocol like SOAP or CORBA can be deployed into the system on the fly (hot deployment) .But I still haven`t completed this part yet. In theory, it should be able to communicate with any service using any protocol by using a Java wrapper around it. The Services can exchange data indirectly through the Workflow application. So, the Services are loosely coupled. The data will be stored using JavaSpaces as long as the Workflow instance is still running. After that the data will be removed from the JavaSpace.

The Workflow Engine - the heart of the application hosts the requested Workflow task and sees to it that the entire task is executed in time as per the request. It keeps a detailed  log of the Workflow task using a logging utility for JDKs < 1.4 called Lumberjack. The Engine has been designed to recover from a crash. The recovery mechanism is almost complete.

The package currently supports Jini Services by default.


Download Ngin 1.0.zip (413 KB).

This zipped file contains all the source code, linux shell scripts and JBuilder 4 Foundation project which I used to develop Ngin on my Linux box running Red Hat 7.1  - 128 Megs RAM, 566 Celeron and Blackdown JDK 1.3.

I referred to Professional Jini 1.1 from Wrox press and Core Jini second edition from Pearson Education.

You can download Java from http://www.java.sun.com.

You can download Jini from http://www.javasoft.com/products/jini.

BeanShell from http://www.beanshell.org/.

Lumberjack from http://javalogging.sourceforge.net/.