Contents

Service Components may be synchronous or asynchronous. Service components are loosely coupled allowing them to interact via exchange of messages in a flexible manner within a Fiorano Event Process. Service components are the building blocks of Fiorano applications (Event Processes). A service component is an application that performs a specific task (for example, sending e-mails or reading a file). Each Service Component has an interface that defines the acceptable formats of each input and output. Most services typically require runtime parameters and other variables to be configured before they are run/executed. Configurations allow customization of Service Components for the specific business scenario/situation being solved by the Event Process. Service components can be categorized as synchronous and asynchronous, based on the manner in which a component is invoked for processing.

Synchronous Components

A synchronous component, as the name suggests, is invoked in a Request - Reply format. Thus the invoking client of this component waits for the component to process the request and send back the response. Fiorano synchronous components implement the J2EE Connector Architecture (JCA) interface, which mandates that each component has a single input and single output. JCA is a standard API that is part of the J2EE platform that implements synchronous function calls semantics.

The Fiorano platform includes a Business Component Development Kit (BCDK) for the development of synchronous components. This framework abstracts the implementation details of JCA.

All synchronous components can also be invoked asynchronously. This is achieved through the usage of a JMSGateway component that provides a layer (wrapper) on top of the BCDK to make the components event-driven, allowing them to be invoked using asynchronous JMS semantics.

Asynchronous Components

Asynchronous components or event-components are based on JMS semantics. Each asynchronous component can have multiple inputs and outputs. Inputs of asynchronous Fiorano components listen for events (JMS messages) via listeners on specific JMS destinations.

Asynchronous components have the concept for ports — abstracted form of JMS destinations. A port can be a queue or a topic and components listen to input ports for JMS messages and send JMS messages on to the output ports. An asynchronous component can define how many input and output ports it needs. These can be added through static definition or dynamically when a component is configured.

Design Choices

When developing a component in the Fiorano Platform, a design decision as to when to use a synchronous component versus an asynchronous component requires a careful understanding of the strengths of both types of components. The following features of both component types help decision making:

Synchronous Components

  • Scheduling, error handling and connection pooling are abstracted
  • Can be deployed in external J2EE JCA containers
  • Cannot have multiple ports in output/input
  • Cannot handle server sockets
  • Cannot have runtime UI with manual intervention
  • Supports only Java programming language for component creation

Asynchronous Components

  • Allows multiple input and output ports
  • Supports multiple programming languages for component creation like Java, C, C++, C# etc.
  • Handles server sockets
  • Allows components to have manual intervention
  • Does not have abstracted layers like synchronous components

Based on the business context, users can determine the type of component to use and/or create.

Adaptavist ThemeBuilder EngineAtlassian Confluence