OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-assembly message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [sca-assembly] Pointer to SCA event processing presentation


Sorry I forgot to add the following general comment.

By the looks of it you agreeing that we need to add to the model to support evening
(adding channels to references, a new binding.eventing etc).
 What I think we should do is focus on the concepts we need to add rather than just tweak the current syntax, and come back to the
syntax issue after.


Martin.

> -----Original Message-----
> From: Martin Chapman [mailto:martin.chapman@oracle.com]
> Sent: 28 August 2009 17:13
> To: 'Jim Marino'
> Cc: 'OASIS Assembly'
> Subject: RE: [sca-assembly] Pointer to SCA event processing presentation
> 
> Jim, didn't mean to imply not to carry on the email discussion, so here are some responses.
> 
> Martin.
> 
> > -----Original Message-----
> > From: Jim Marino [mailto:jim.marino@gmail.com]
> > Sent: 27 August 2009 21:28
> > To: Martin Chapman
> > Cc: 'OASIS Assembly'
> > Subject: Re: [sca-assembly] Pointer to SCA event processing presentation
> >
> > Hi Martin,
> >
> > I will try my best to attend in September. I have been tied up with
> > other commitments over the summer that overlap with the SCA calls. In
> > the meantime, it may be beneficial if we can continue some of the
> > discussion through email as a way to make forward progress.
> >
> > Thanks,
> > Jim
> >
> > On Aug 27, 2009, at 5:45 PM, Martin Chapman wrote:
> >
> > > Jim,
> > >
> > > On yesterdays call we agreed to have bi-weekly sessions, starting
> > > 9th Sep, focussing on eventing.
> > > We need to collect comments, and address them as appropriate.
> > > You contribution below is valuable to this effort and I would
> > > encourage you to participate in these calls.
> > >
> > > Martin
> > >
> > >> -----Original Message-----
> > >> From: Jim Marino [mailto:jim.marino@gmail.com]
> > >> Sent: 27 August 2009 15:36
> > >> To: Martin Chapman
> > >> Cc: 'OASIS Assembly'
> > >> Subject: Re: [sca-assembly] Pointer to SCA event processing
> > >> presentation
> > >>
> > >> OK. Not having been privy to the initial drafting of the
> > >> specification
> > >> outside of OASIS (i.e. in OSOA), I may raise some questions that have
> > >> already been answered. But for those who are new to this such as
> > >> myself, I'll ask them anyway.
> > >>
> > >> My first reaction - and this is based on incomplete knowledge - is
> > >> that eventing seems to be dragging in a boat-load of additional
> > >> concepts and technologies. For example, as you mention below, there
> > >> is
> > >> the possibility that an interoperable eventing protocol may be
> > >> required.
> > >>
> > >> There are also: consumers, producers, events, event types, EDL,
> > >> channels, filters, and channel promotion. Many of those concepts
> > >> appear to simply mirror concepts we already have. For example:
> > >>
> > >> consumers 			---->  services
> > >> producers   			---->  references
> > >> events         			---->  messages
> > >> EDL             			----> a type system such as XML Schema or Java
> > >> channels    			----> binding metadata
> > >> filters           			----> binding metadata
> > >> channel promotion 	----> service/reference promotion
> > >>
> > >> The reason why I asked if JMS could be used to implement eventing is
> > >> that I wanted to see if this apparent duplication of concepts could
> > >> be
> > >> eliminated by accommodating eventing capabilities using existing
> > >> concepts, in particular bindings. Since JMS appears to capture the
> > >> semantics of eventing, this leads me to believe an "eventing" binding
> > >> and a set of intents could be defined to achieve this.
> > >>
> > >> I noticed the deck contained a slide outlining why these additional
> > >> concepts are needed. Before responding to that, I'll outline what I
> > >> was thinking first.
> > >>
> > >> To start, I was thinking there would be an eventing binding which
> > >> could be configured in the following way:
> > >>
> > >> <component name="MyProducer">
> > >> 	<implementation.java ..../>
> > >>         <reference name="channel1">
> > >> 	     <binding.eventing channel="foo"/>
> > >> 	</reference>
> > >>         <reference name="channel1">
> > >> 	     <binding.eventing channel="bar"/>
> > >> 	</reference>
> > >> </component>
> > >>
> > >> <component name="MyFooConsumer">
> > >> 	<implementation.java ..../>
> > >>         <service>
> > >> 	     <binding.eventing channel="foo" filter=".."/>
> > >> 	</service>
> > >> </component>
> > >>
> > >> <component name="MyBarConsumer">
> > >> 	<implementation.java ..../>
> > >>         <service>
> > >> 	     <binding.eventing channel="bar" filter=".."/>
> > >> 	</service>
> > >> </component>
> > >>
> > >>
> > >> public class MyProducerImpl implements SomeService {
> > >>
> > >> 	@Reference
> > >>         protected MyChannel channel1;
> > >>
> > >> 	@Reference
> > >>         protected MyChannel channel2;
> > >>
> > >> 	public void doSomething(...) {
> > >> 		Event event1 == //...
> > >> 		Event event2 == //...
> > >> 		channel1.onEvent(event1);
> > >> 	}
> > >>
> > >> }
> > >>
> > >> public interface MyChannel {
> > >>
> > >>         @OneWay
> > >> 	void onEvent(Event event) ;
> > >> }
> > >>
> > >>
> > >> Based on this example, I've included some comments with respect to
> > >> the
> > >> slide from the deck mentioned above:
> > >>
> > >> 1. No decoupling
> > >>
> > >> I think the above example is fairly decoupled. It requires a
> > >> reference
> > >> to be bound (but not wired), which I think is the correct behavior
> > >> given that allowing 0..n would require code to check for null
> > >> pointers
> > >> making it complex. If there was no consumer, the binding would
> > >> swallow/
> > >> ignore the event.
> 
> [<MartinC>] Since I think a reference can only be either a normal (sca 1.1) reference or a reference
> to an eventing channel (but not
> both) does it real make sense to overload the semantics. I agree there is a lot of syntactic
> similarities, but since the semantics
> are very different between the two modes of interactions is it wise to use the same syntax. Also, I
> think references/publisher is
> the easy side of the equation, the service is more complex imho. For bindings we need to be able to
> also indicate the underlying
> technology binding, so that we can configure binding.eventing.jms or binding.eventing.mq, this is a
> change to the current binding
> model.
> 
> > >>
> > >> 2. Requires interfaces for typing
> > >>
> > >> I'm not sure I follow this. My understanding is that for strongly
> > >> typed languages such as Java, some interface is required. If an
> > >> interface is not required, how is an event sent in Java? Even other
> > >> language, some shared type system or type mapping is required.
> 
> [<MartinC>] The issue here is whether the recipient barfs if it gets something it didn't quite expect.
> In RMI, if you don't get your parameters matching you get a system failure - this is strong typing.
> In JMS you have to unpack and decipher the onMessage contents, and its up to you if you barf or not.
> Its more loosely typed as you
> can tolerate different data.
> 
> > >>
> > >> 3. Interface/operations have processing semantics, events don't
> > >>
> > >> I'm not sure I agree with the assumption that interfaces have
> > >> processing semantics. How does MyChannel.onEvent() imply processing
> > >> semantics?
> 
> [<MartinC>]  At one level, send(msg) receive(msg) everything is the same, but as you go up into the
> application level code there are
> two modes of thinking: send this message to whoever verses interact  with a service provide to do
> something, the later has a service
> contract at the destination.
> 
> >>>One thing that would help is if someone could provide a
> > >> Java code example that did not imply processing semantics so a
> > >> comparison can be mode.
> [
> [<MartinC>] The point is that there is no semantic contract between a producer and a consumer, but
> there is between client invoking
> a service. That's what we mean by implied processing here - semantic contract.
> 
>  > Note that the MyChannel example was strongly
> > >> typed, but the following could also be defined:
> > >>
> > >> public interface MyUntypedChannel {
> > >>
> > >>  	void event(Object event);
> > >> }
> > >>
> > >> 4. Doesn't allow addition of producers/consumers dynamically
> > >>
> > >> I think the proposal above addresses this concern. It would be up to
> > >> the binding infrastructure to handle this. Note that I think there
> > >> may
> > >> be an incorrect assumption related to references/wires as well. Wires
> > >> can be updated dynamically.
> 
> [<MartinC>] Your proposal does address this but see comment above about syntax vs semantics.
> > >>
> > >> 5. No ability to set filters
> > >>
> > >> This would be handled in the binding configuration. In the example, I
> > >> used an attribute but it could also be modeled as an element for
> > >> complex expressions. I'm hoping the filter language will be left open
> > >> as opposed to inventing one.
> 
> [<MartinC>] Again this is a syntax vs semantics issue. Filters only apply to eventing (I hope at
> least) so lets separate out
> concerns.
> > >>
> > >> 6. Various issues crop up because of the model mismatch. For example,
> > >> sca:reference(0..n) is mapped to an array in Java
> > >>
> > >> This would be addressed by using a bound required (1..1) reference.
> [<MartinC>] Ok there are restrictions if you use a reference for eventing. By the time you have
> enumerated all the restrictions and
> additions it gets very confusing.
> 
> > >> Also, note that 0..n does not have to map to an array in Java, it can
> > >> also map to certain collection types. Are there other issues along
> > >> these lines?
> [<MartinC>] Yes, another issue is that application programmers want to send one event, not go through
> sending it to multiple
> places.
> 
> > >>
> > >> 7. Subscribers do not offer services they offer callbacks
> > >> 8. Services do not subscribe they make software functionality
> > >> available for others to use.
> > >>
> > >> I think these two  are debatable. For example, the JMS binding works
> > >> this way. Why can't we use the same principle and keep things
> > >> consistent with JMS?
> > >>
> > >> 9. A subscribe message will be sent from a service to a reference: a
> > >> direction reversal
> > >>
> > >> I think this is conflating services/references and runtime
> > >> infrastructure. The latter is setting up subscriptions, not a service
> > >> or reference. This is consistent with how the JMS binding is
> > >> designed.
> > >>
> > >> 10. Changes are hard to manage
> > >>
> > >> Could you provide examples?
> > >>
> > >>
> > >> -------------------------------
> > >>
> > >> What would help me is if someone can provide examples of how eventing
> > >> works in a concrete programming language. My own preference is Java,
> > >> but C++, BPEL, etc,. would be fine.
> > >>
> > >> Thanks for reading this far :-)
> > >>
> > >> Jim
> > >>
> > >> On Aug 27, 2009, at 3:24 PM, Martin Chapman wrote:
> > >>
> > >>> We have not addressed that question yet. The current Assembly spec
> > >>> does state in the conformance section that a web services binding
> > >>> is required, and there is a PR comment on that. Depending on how we
> > >>> resolve that comment, we may have to add an analogous
> > >>> interoperable protocol for eventing (or not as the case may be.)
> > >>>
> > >>> Martin.
> > >>>
> > >>>
> > >>>> -----Original Message-----
> > >>>> From: Jim Marino [mailto:jim.marino@gmail.com]
> > >>>> Sent: 27 August 2009 14:14
> > >>>> To: Martin Chapman
> > >>>> Cc: 'OASIS Assembly'
> > >>>> Subject: Re: [sca-assembly] Pointer to SCA event processing
> > >>>> presentation
> > >>>>
> > >>>> OK I'm currently just interested in the API. From your response, it
> > >>>> sounds as if the JMS API can be used to capture the semantics of
> > >>>> the
> > >>>> eventing proposal.
> > >>>>
> > >>>> Given that, your response does raise an additional question. Is the
> > >>>> proposal mandating an interoperable wire protocol such as WS-
> > >>>> Eventing
> > >>>> or AMQP be used? In other words, would it be considered compliant
> > >>>> to
> > >>>> build eventing capabilities using a JMS provider that did not
> > >>>> support
> > >>>> an interoperable wire protocol? I'm hoping your answer is "yes" :-)
> > >>>>
> > >>>> Thanks,
> > >>>> Jim
> > >>>>
> > >>>>
> > >>>>
> > >>>> On Aug 27, 2009, at 2:48 PM, Martin Chapman wrote:
> > >>>>
> > >>>>> Everything but a standard wire protocol;-)
> > >>>>>
> > >>>>>> -----Original Message-----
> > >>>>>> From: Jim Marino [mailto:jim.marino@gmail.com]
> > >>>>>> Sent: 27 August 2009 00:06
> > >>>>>> To: OASIS Assembly
> > >>>>>> Subject: Re: [sca-assembly] Pointer to SCA event processing
> > >>>>>> presentation
> > >>>>>>
> > >>>>>> Hi Anish,
> > >>>>>>
> > >>>>>> I have a very naive question about the eventing proposal: is
> > >>>>>> there a
> > >>>>>> capability that cannot be implemented using JMS? My impression is
> > >>>>>> the
> > >>>>>> JMS API has everything that is needed to be the foundation of an
> > >>>>>> eventing system.
> > >>>>>>
> > >>>>>> As an aside, I'm not asking this as a way of implying that JMS
> > >>>>>> should
> > >>>>>> be used and/or required.
> > >>>>>>
> > >>>>>> Jim
> > >>>>>>
> > >>>>>>
> > >>>>>>
> > >>>>>> On Aug 26, 2009, at 6:57 PM, Anish Karmarkar wrote:
> > >>>>>>
> > >>>>>>> Hi Sanjay,
> > >>>>>>>
> > >>>>>>> Here is the link to the presentation:
> > >>>>>>> http://www.oasis-open.org/apps/org/workgroup/sca-assembly/download.php/32653/SCA-
> > >>>>>> EventingProcessing.pdf
> > >>>>>>>
> > >>>>>>> It does talk about the motivation and has use cases.
> > >>>>>>>
> > >>>>>>> HTH
> > >>>>>>>
> > >>>>>>> -Anish
> > >>>>>>> --
> > >>>>>>>
> > >>>>>>> ---------------------------------------------------------------------
> > >>>>>>> To unsubscribe from this mail list, you must leave the OASIS TC
> > >>>>>>> that
> > >>>>>>> generates this mail.  Follow this link to all your TCs in OASIS
> > >>>>>>> at:
> > >>>>>>> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > >>>>>>
> > >>>>>>
> > >>>>>> ---------------------------------------------------------------------
> > >>>>>> To unsubscribe from this mail list, you must leave the OASIS TC
> > >>>>>> that
> > >>>>>> generates this mail.  Follow this link to all your TCs in OASIS
> > >>>>>> at:
> > >>>>>> https://www.oasis-open.org/apps/org/workgroup/portal/
> > >>>>>> my_workgroups.php
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>> ---------------------------------------------------------------------
> > >>>>> To unsubscribe from this mail list, you must leave the OASIS TC
> > >>>>> that
> > >>>>> generates this mail.  Follow this link to all your TCs in OASIS
> > >>>>> at:
> > >>>>> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > >>>>>
> > >>>
> > >>>
> > >>>
> > >>> ---------------------------------------------------------------------
> > >>> To unsubscribe from this mail list, you must leave the OASIS TC that
> > >>> generates this mail.  Follow this link to all your TCs in OASIS at:
> > >>> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > >>>
> > >>
> > >>
> > >> ---------------------------------------------------------------------
> > >> To unsubscribe from this mail list, you must leave the OASIS TC that
> > >> generates this mail.  Follow this link to all your TCs in OASIS at:
> > >> https://www.oasis-open.org/apps/org/workgroup/portal/
> > >> my_workgroups.php
> > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe from this mail list, you must leave the OASIS TC that
> > > generates this mail.  Follow this link to all your TCs in OASIS at:
> > > https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe from this mail list, you must leave the OASIS TC that
> > generates this mail.  Follow this link to all your TCs in OASIS at:
> > https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail.  Follow this link to all your TCs in OASIS at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]