[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: Fw: [sca-assembly] A look at use-cases for composition with eventing,alternate approaches to make them work better
Hi Peter, Thanks for pulling this email together. As I mentioned on the call, I think I have some minor points where I'd state the summary differently, and/or expand. On 09/14/2010 08:18 AM, Peter Niblett wrote: OF5BB00102.D3159F94-ON8025779E.0053EB02-8025779E.00541899@uk.ibm.com" type="cite">As there have been no more postings on this thread, I will try and summarise the discussion Perhaps worth restating at this point - I picked this scenario because it expresses the potential complexity with as few pieces as I think I could get away with. In actual (eventual) use, I expect many more components, and many more composites, combined in equally bizarre ways. The key characteristics include many components (>4 or 5) coupled with composites nested within other composites. and some relationship between producers and consumers within the scope of a composite. OF5BB00102.D3159F94-ON8025779E.0053EB02-8025779E.00541899@uk.ibm.com" type="cite"> Well, I don't think it is just a concern. ;-) I'm not quite sure "encapsulation" covers exactly the same problem space as "composability." But sure, let's address both! OF5BB00102.D3159F94-ON8025779E.0053EB02-8025779E.00541899@uk.ibm.com" type="cite"> In PC #1 shown on page 2 there's and A/D composite nested in one that also contains B/E, in turn nested in one that contains C/F. There's nothing in the externals of each composite to tell the assembler of the next level up that it is using a global channel internally. Thus ... and further, that since nothing is exposed as part of the componentType, the assembler needs to know the intent of the inner composites, and there's nothing in the model that exposes the need to ask that question. (I think this is a place where the distinction between encapsulation and composability matters. We might devise clever ways to use namespaces or other tricks to scope the use of global domain channels, and thus encapsulate the problem. However, the absence of any detail in the componentType about which global channels are in use - or even that there are global channels in use - still makes it more difficult to compose composites with other composites.) OF5BB00102.D3159F94-ON8025779E.0053EB02-8025779E.00541899@uk.ibm.com" type="cite"> As we've discussed before, the word "access" is a little tricky. That has room for misinterpretation related to security. I'd state it as making sure the model isn't forced to expose the channel to other composites (where the "model" includes global domain channels). (Not previously discussed): To make the Java analogy, as part of the Java programming model, a package scoped class is not exposed to other packages (model exposure), but the runtime does have the ability to circumvent those model restrictions (access). In the same way, I'm suggesting that the current model doesn't quite have the correct model that expresses a constraint similar to the package scoped Java class, but for a channel. (Perhaps an OSGi analogy is more appropriate, but I don't know how familiar all of you are with that.) OF5BB00102.D3159F94-ON8025779E.0053EB02-8025779E.00541899@uk.ibm.com" type="cite"> To further complete the record here, Danny has identified that the scenarios are pathological in their outcomes, not necessarily in their intent. Also, I've challenged people to come up with alternate uses of global channels that fit the key characteristics that expose the complexity. If someone passes along what they think is a real-world scenario with >5 components, nested composites, and uses global channels, then I'm happy to take that on and draw pictures. Otherwise, for the moment, we're stuck with my scenarios, although I wish we weren't. OF5BB00102.D3159F94-ON8025779E.0053EB02-8025779E.00541899@uk.ibm.com" type="cite">1. Introduce some kind of formal namespacing of global channels. I think it was Danny who pointed to a non-pathological scenario where the top level composites were being used to isolate different applications, or perhaps dev and test versions of an application. (Not discussed previously) In addition to the scenarios that Danny has mentioned, I'm also concerned about scenarios that include company acquisitions, departmental boundaries, and company reorganizations, all situations in which managing a "global" namespace of channels becomes difficult. OF5BB00102.D3159F94-ON8025779E.0053EB02-8025779E.00541899@uk.ibm.com" type="cite">2. Introduce a kind of "non-global" or "respecifiable global" channel. The idea would be like XML namespace prefixes. Components use something like global namespace references, but at any level in the assembly you can instantiate a channel (like we do for local channels) but assign it a name, and any references to that name in the composite, or in any composite that it contains resolve to that name (unless the name is already respecified lower down). Interesting. I don't recall you talking about this on the calls we've had. If you have, I apologize for missing it. Can I impose upon you to send a separate email that describes this in a little more detail? If I can figure out how, after I've seen your email, I can add some more pictures that represent this approach. OF5BB00102.D3159F94-ON8025779E.0053EB02-8025779E.00541899@uk.ibm.com" type="cite"> The proposal I submitted to the TC is actually a variation on #3 - no longer do producers and consumers get promoted via the component type, just channels. Approach #4 was a suggestion by one of my colleagues at TIBCO, which I added to the pictures. To my mind, proposal #4 subtly inverts my original proposal, and has some curious implications. Graphically, I think this naturally gets expressed as wiring components directly to each other, instead of wiring them via a "channel" object in a containing composite. One other tidbit I think your summary doesn't quite cover - namely terminology. Specifically, one of the points we've discussed is whether, if you consider my original proposal, proposal #3, or proposal #4, then the bare word "channel" is heavily overloaded. and perhaps we need a better term. Unfortunately, I don't remember all of what others have suggested. (What we might want to say is something slightly more precise, like "logical channel", or "channel reference", or "channel descriptor".) -Eric. OF5BB00102.D3159F94-ON8025779E.0053EB02-8025779E.00541899@uk.ibm.com" type="cite"> |
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]