Every system is responsible for publishing its own events.  I hold that as a core requirement of participating in an Enterprise Application Integration Infrastructure (EAI-I).  What does that mean:

The system, as part of it’s ownership, it’s code, it’s configuration, is responsible for describing how it meets corporate canonical event requirements.  That belongs with the system, not with the EAI side. 

EAI is responsible for routing, translation, orchestration, logging, management, etc.  It should behave correctly regardless of how data is collected from the source system. 

Problem is that there are serious advantages to having a central infrastructure to manage these connections.  I spend a lot of my time looking at ‘spaghetti’ diagrams and one thing that is absolutely clear to me is that I spend way too much time collecting data individually on these integration points.  That reduces my ability to actually manage any of these connections.  As we move more to SOA, we will need this even more. 

What I’d like to see is a standard mechanism that meets the following needs.  If anyone can help me to understand a known standard or existing RFC that addresses these points, I’d appreciate it.

  1. A system publishes and makes available the list of integration points that it has with other systems.
  2. The EAI system queries these published points to drive it’s configuration and expectations.
  3. Publishing of these expectations should be both dynamic (as a message) and static (as something that can be queried)
  4. The description of an integration pathway or channel must be standardized, so that different EAI infrastructures can use them, and so that different reporting and management systems can leverage them, without adapters.
  5. A system can version the connection points with a release in a way that is not too difficult for developers to understand and work with.

Note that UDDI presents PROVIDERS for integration.  I need CONSUMERS and COLLABORATORS to cooperate as well, in a way that is completely under the control of the system that consumes, collaborates, or provides the integrations.