Menu

workflow Log in to Edit

Bin Yu

Features

LightJ embedded workflow engine is a lightweight framework implemented in pure java with no more than 30 core classes, support the following features

  • Persistent or transient state by choice (currently support mysql, oracle, and hsqldb)
  • Persistent or transient execution context by choice
  • Crash recovery
  • Cluster safe (cluster implementation based on shoal/grizzly GMS)
  • Built-in synchronous, asynchronous, split/merge, loop, schedule execution pattern support
  • Built-in error handling, no error will “fall through the crack”
  • Built-in logging and flow event handling
  • Many built-in flow fine tune features by annotations.
  • Nested flows or flow join support
  • Standard flow control interface, start, stop, pause, resume, kill
  • Flow validation at initialization, straightforward initialization and registration
  • Spring compatible, flow can be initialized by spring DI
  • Workflow logic and transition completely built by java, easy to learn, easy to use, easy to support
  • Minimal external dependencies, no complicated XML workflow definition in XML

Key design

  • Workflow implementation by extending FlowSession base class
  • FlowDefinition annotation for flow information, and concurrent execution grouping
  • FlowStep enum provide state definition of the flow
  • Each enum value in FlowStep enum maps to a method in flow implementation using the same name, the method is responsible of building the execution logic for the step
  • StepExecution contains execution logic for a flow step, there are 2 main flavors
  • StepTransition is returned by a FlowStepExecution and provide information of state transition.
  • FlowContext contains context information that can be persisted and accessed each step of the way
  • FlowDrive drives the flow from start to end or to as far as it can be run.
  • FlowProperty for flow specific properties eg. cluster, recovery, concurrency etc.
  • FlowStepProperty annotation for step properties eg. weight
  • FlowEvent enum defines flowevent generated by the framework at runtime
  • FlowEventListener interface to handle flow event

To Learn More

For more details, check out LightJ source code package org.lightj.session.*, examples in lightj-examples.zip at download section


Related

Home: Home
Wiki: Home

Discussion

Anonymous
Anonymous

Add attachments
Cancel





Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.