Browse files

Reflex objects seem to interact in ways similar to the Enterprise Int…

…egration Patterns. Summarize some of those patterns in the TODO outline, and add tasks to investigate more.
  • Loading branch information...
1 parent c5a86a1 commit 97fe645e9ad687b414a9983774d9abd25da1c42b @rcaputo committed Mar 20, 2011
Showing with 117 additions and 2 deletions.
  1. +117 −2 docs/TODO.otl
119 docs/TODO.otl
@@ -1,4 +1,4 @@
-[_] 45% Framework Requirements
+[_] 44% Framework Requirements
This document summarizes the best ideas from the patterns document.
It is also a master TODO list for Reflex.
@@ -168,7 +168,7 @@
[X] 100% Moose introspection allows objects to find their contents.
[X] 100% Class Inheritance Rules
[X] 100% Class inheritance rules are delegated to Moose.
- [_] 28% Messaging Requirements
+ [_] 24% Messaging Requirements
[_] 0% Object command interfaces must be methods.
[_] 0% Methods on the objects themselves may pass messages into themselves.
Synchronous method calls are translated into asynchronous messages.
@@ -237,6 +237,121 @@
[_] 0% Generally, all inner messages should complete before an outer message completes.
This emulates asynchronous call/return semantics for messages.
Task coordination is simplified.
+ [_] 0% Consider Enterprise Integration Patterns
+ [_] 0% Determine relevant patterns.
+ [_] 0% Reconcile competing patterns.
+ For example, make sure polling and event-driven consumers work together.
+ Even if one polling consumer is competing with an event-driven consumer.
+ [_] 0% Specify the roles and classes to implement these patterns.
+ [_] 0% Implement them.
+ Integration Styles
+ Notes
+ Not as applicable for event processing.
+ File Transfer
+ Shared Database
+ Remote Procedure Invocation
+ Messaging
+ Messaging Systems
+ Message Channel
+ Message
+ Pipes and Filters
+ Message Router
+ Message Translator
+ Message Endpoint
+ Messaging Channels
+ Point to Point
+ Publish Subscribe
+ Datatype Channel
+ Invalid Message Channel
+ Dead Letter Channel
+ Guaranteed Delivery
+ Channel Adapter
+ Messaging Bridge
+ Message Bus
+ Message Routing
+ Content Based Router
+ Message Filter - remove uninteresting messages from a stream
+ Dynamic Router - routing changes based on input from other entities
+ Recipient List - route a message to a list of dynamically specified recipeints
+ Splitter - process a message containing multiple elements, each of which may be processed in a different way
+ Aggregator - combine the results of individual but related messages so they may be processed as a whole
+ Resequencer - convert a stream of related but out-of-sequence messages back into the correct order
+ Composed Message Processor
+ Maintain overall message flow when processing a message consisting of multiple elements.
+ Each element may require different processing.
+ Scatter-Gather
+ Maintain overall message flow when a message needs to be sent to multiple recipients.
+ Each recipient may send a reply.
+ Routing Slip
+ Route a message consecutively through a series of processing steps.
+ The sequence of steps is not known at design time.
+ The sequence may vary for each message.
+ Process Manager
+ Route a message through multiple processing steps.
+ The required steps may not be known at design time.
+ Steps may not be sequential.
+ Message Broker
+ Decouple the destination of a message from the sender.
+ Maintains central control over the flow of messages.
+ Message Transformation
+ Envelope Wrapper
+ Allows existing systems to participate in a messaging exchange that places specific requirements on the message format.
+ Examples: Message header fields, encryption.
+ Content Enricher
+ Allows communication with another system if the message originator doesn't have all the required data available.
+ Adds required data to messages, bringing them in compliance with recipients.
+ Content Filter
+ Discard uninteresting parts of messages.
+ Used to pare down large messages when a significantly smaller data set is required.
+ Claim Check
+ Cookie based communication.
+ Reduces data volume of messages without sacrificing information content.
+ Normalizer
+ Process messages that are semantically equivalent but arrive in different formats.
+ Canonical Data Model
+ Minimize dependencies when integrating applications that use different data formats.
+ Messaging Endpoints
+ Messaging Gateway
+ Encapsulates access to the messaging system from the rest of the application.
+ Messaging Mapper
+ Move data between domain objects and the messaging infrastructure while keeping the two independent of each other.
+ Transactional Client
+ How can a client control its transactions with the messaging system?
+ Polling Consumer
+ Allows an application to consume messages when ready.
+ Event-Driven Consumer
+ Allows an application to automatically consume messages as they become available.
+ Competing Consumers
+ Allows a messaging client to process multiple messages concurrently.
+ Each consumer competes for messages from the source.
+ Message Dispatcher
+ How can multiple consumers on a single channel coordinate their message processing?
+ Selective Consumer
+ How can a message consumer select which messages it wishes to receive?
+ Durable Subscriber
+ How can a subscriber avoid missing messages while it's not listening for them?
+ Idempotent Receiver
+ How can a message receiver deal with duplicate messages?
+ Service Activator
+ How can an application design a service to be invoked both via various messaging technologies and via non-messaging techniques?
+ System Management
+ Control Bus
+ Effectively administer a messaging system distributed across multiple platforms and a wide geographic area.
+ Detour
+ Route a message through intermediate steps to perform validation, testing or debugging functions.
+ Wire Tap
+ Inspect messages that travel on a point-to-point channel.
+ Message History
+ Effectively analyze and debug the flow of messages in a loosely coupled system.
+ Message Store
+ Report against message information without disturbing the loosely coupled and transient nature of a messaging system.
+ Smart Proxy
+ Track messages on a service that publishes reply messages to the Return Address specified by the requester.
+ Test Message
+ What happens if a component is actively processing messages but garbles outgoing messages due to an internal fault?
+ Channel Purger
+ Prevents 'left over' messages on a channel from disturbing tests or running systems.
[_] 50% Session Location Rules
[X] 100% Objects may be created in the same session as the creator.
[_] 0% Objects may be created in new sessions, separate from the creator.

0 comments on commit 97fe645

Please sign in to comment.