Skip to content

Trooper Orchestration Profile

regunathb edited this page Dec 19, 2012 · 13 revisions

The Trooper Orchestration Profile enables chaining of a number of execution stages in a manner reminiscent of workflows. Each stage is implemented as a Trooper Service (see Writing-Services-in-Trooper) and this in turn means any Trooper service can participate in a workflow, with transformation and routing implemented outside the service.

Orchestration in Trooper is defined in a XML based DSL using Mule (http://www.mulesoft.org/) as the underlying technology. Mule is embedded into the Trooper runtime using Spring DI as a light-weight object broker. Mule is therefore not used as a conventional ESB, but rather as an implementation of the SEDA architecture pattern (http://en.wikipedia.org/wiki/Staged_event-driven_architecture) for distributed parallel processing.

SEDA (Staged Event Driven Architecture)

A diagrammatic representation of the SEDA model used by Trooper is shown below:

SEDA model

Profile characteristics

The orchestration profile provides the following to its users:

  • Provision for modular development, testing and deployment of workflows and services
  • Life-cycle management of workflows, configuration refresh using administrative console(s)
  • Compile-and-run support for all orchestration profile features - does not require any packaging for deployment and testing thereby saving development time, providing for easier debugging (via standard break-points in IDEs)
  • Implementation of Convention-Over-Configuration practices to ease development, deployment

Trooper add-ons

  • Exception routing as JMX notifications - Trooper provides an Exception handling strategy implementation ('org.trpr.platform.seda.impl.mule.exceptionhandling.ServiceExceptionStrategy') that forwards error details as JMX notifications.
  • RabbitMQ transport - Trooper provides a Mule 2.x interface compliant transport implementation for RabbitMQ 2.x. See RabbitMQ-Mule-Connector
  • Service response filtering router - To filter out error service responses in the orchestration flow. Externalizes chaining logic from services, thereby making it self-contained. See 'org.trpr.platform.seda.impl.mule.router.ErrorResponseFilteringRouter'