Patent ID: 8612997

Claim:
A distributed system, comprising: at least two computer systems each including one or more processors; and a distributed system of software components configured to execute on the at least two computer systems, wherein the software components, when executed on one or more of the one or more processors, are configured to provide: an input gateway for accepting input events; a distribution component for distributing the input events, via the input gateway, to an input port; an event registry in which an event driven component registers an interest in accepting a subset of the input events to generate output events when executing a plurality of services, wherein each service in the plurality of services is associated with one or more events; a coarse-grained component for providing a coarse-grained function via the input port, wherein the coarse-grained function provides the plurality of services; a buffered port that provides respective queues corresponding to each of the plurality of services according to a configurable policy, wherein the buffered port is dedicated to be exclusively used by the event driven component, and wherein each of the queues: holds at least one of the subset of the input events, selects an input event of the at least one of the subset of input events using the configurable policy, and provides the selected input event to the course-grained component which generates an output event by applying the service associated with a respective one of the queues to the selected input event; and an output gateway for dispatching the generated output event to an output port; wherein the distributed system is further configured to: receive an incoming event at the input gateway; determine if the event driven component has registered an interest in the incoming event; in response to the event driven component having registered an interest in the incoming event, identify, at the input gateway, an identified input port that should receive the input event; route the input event to the identified input port; in response to determining that the identified input port is buffered, identify an appropriate identified queue for handling the input event; place the input event in the appropriate identified queue; select the input event from the appropriate identified queue according to a policy set by the event driven component; identify an identified service that is associated with the input event; execute the identified service with the input event; utilize the identified service to translate the input event into appropriate input arguments that are required for a specific business service; invoke and execute the specific business service; and output a result of the execution of the specific business service.