Re: [asap] Factory in ASAP

From
David RR Webber <>
Date
2003-11-07T17:25:02+00:00
ID
02d901c3a554$a1316270$6501a8c0@DRRW01
Thread
Re: [asap] Factory in ASAP
Title: RE: [asap] Factory in ASAP

Keith,

 

Actually that's not at all so!  The Charter is 
NOT set in stone.  You can change it - there is a process for doing that - 
see the OASIS manual for that detail.  

 

However - perhaps a better solution here is to have 
a subcommittee.  The subcommittee can go off and research "stuff" and then 
come back and recommend something to the main TC.

 

So - for instance - you could have a SC to 
investigate if the charter needs to be extended, if that would be appropriate to 
do, and if it makes sense for the TC to do it as an extension of their original 
focus. 

 

To setup a TC you need to have a vote at your next 
meeting - and then agree on what the terms of reference are for the SC, then 
notify Jamie at OASIS - he sets up the SC area in Kavi - and then members can 
signup there and participate, etc.

 

Hope this helps.

 

DW.

 

 

  
----- Original Message ----- 

  
From: 
  Michael 
  Shenfield 

  
To: Keith Swenson ; Mayilraj 
  Krishnan ; Jeffrey Ricker 

  
Cc: ASAP 

  
Sent: Friday, November 07, 2003 11:49 
  AM

  
Subject: RE: [asap] Factory in ASAP

  

  
Well...if what you say about the charter is correct and it's "carved in 
  stone" than all discussions about the scope are obsolete as it's predefined. 
  In this case I just retreat to observer status. I am not very interested in 
  "monitored and controlled" asynchronous services as they are not wireless 
  friendly by nature. 

  

-----Original Message-----
From: Keith Swenson 
  [mailto:]
Sent: November 7, 2003 11:37 
  AM
To: Michael Shenfield; Keith Swenson; Mayilraj Krishnan; Jeffrey 
  Ricker
Cc: ASAP
Subject: RE: [asap] Factory in 
  ASAP

  
    
The charter of this technical committee specifically states 
    that the asynchronous service is something that that can be monitored and 
    controlled.  This charter was put into place to guide our discussion, 
    and to keep us from getting off track.  Since you agree that a factory 
    is needed to be able to monitor and control an asynchronous service, then 
    any discussion about alternate approaches should be taken to a different 
    technical committee.

    
Please understand, it is not that I don't respect your 
    position, or that I think the problem you are tyring to solve is 
    unimportant.  It is only that this technical committee is set out to 
    solve is the problem defined by the charter.  This technical committee 
    CAN NOT change the charter.  In order to accomplish that goal, we need 
    to remain very much focussed on what the charter says.

    
If you disagree with the charter, then make a new charter 
    and technical committee.  It is not hard. 

    
That being said, this technical committee MUST have a 
    protocol that allows for the monitoring and controlling of an asynchronous 
    service.  There may be ways that involve somthing other than a factory, 
    and I am open to discussions about this.

    
It is possible that a particular IMPLEMENTATION of the 
    protocol "degrades" such that it instead of being monitorable and 
    controllable, it returns an error message instead.  I am not saying 
    that all asynchronous services must be controllable or monitorable.  
    But, the protocol MUST provide for this capability. 

    
The 80/20 rule works as long as you meet fundamental 
    criteria.  For example, a car is not a car if it has no wheels.  
    The 20% that remains must include some sort wheels.  The fundamental 
    criteria in this case is that a service can be monitored and 
    controlled.

    
-Keith 

    
-----Original Message----- 
From: 
    Michael Shenfield [mailto:] 
    
Sent: Friday, November 07, 2003 7:13 AM 
To: 'Keith Swenson'; Mayilraj Krishnan; Jeffrey Ricker 
    
Cc: ASAP 
Subject: RE: [asap] 
    Factory in ASAP 

    
Re: "...Let me repeat my request from before:  Describe 
    what must be done to 
link 
two systems at run time together such that one can start a long 
    term 
process, 
update it 
    later, check its status, and terminate it if necessary.  It is 
    
from 
the dynamics of this linking 
    that the advantages of this approach appear..." 

    
Sure, if you want to do all these things (update, check 
    status, terminate) 
you'll need a factory. Following 
    80-20 rule I would assume that only 20% of 
async  service implementations ever need these features, 
    therefore I am 
quite convinced that it would be an 
    overkill to include it in the spec as a 
requirement 
    for ASAP compliance. 
As we represent two poles in 
    the view on the scope of specification we need 
to 
    let the rest of the group to express their opinion, hopefully we will 
    get 
a features list from Jeffrey anytime soon and be 
    able to vote on specific 
features to be 
    included/excluded. Essentially it should solve an argument 
about the need for a factory. 
Cheers, 
    

    
Mike 
  

    
-----Original Message----- 
From: 
    Keith Swenson [mailto:] 
    
Sent: November 7, 2003 9:50 AM 
To: 
    Michael Shenfield; Keith Swenson; Mayilraj Krishnan; Jeffrey Ricker 
    
Cc: ASAP 
Subject: RE: [asap] 
    Factory in ASAP 

    
>> Your other example is with 1,200,000,000 
    operations. Again I am puzzled. 
>> Why not to 
    have just 4 operations Create, CheckStatus, Change, and Cancel 

    
>> while passing an SSN as a parameter(part)? 
    
Of course, in this case it would probably be better 
    to do what you suggest. 
The example was bad, but all 
    I was using it for was to show that factories 
can 
    
be "virtual".  A better example might be that 
    the factory address includes 
the 
name of a Java class which is a servlet to be invokved.  Or it 
    even could 
specify 
the 
    method on a particular class.  The point is that there does not need to 
    
be any additional overhead just because there are a 
    number of "factories". 
>> I think the 
    mechanism of Web Service instantiation 
>> 
    should be left to framework providers. 
Of course it 
    should.  Please don't confuse the creation of a web service 
    
with the creation of an Asynchronous Service 
    Instance.  Creating an instance 

    
of the service, is not really creating a new web 
    service.  Just like 
creating 
and instance of an object is not creating any new methods. 
    
>> We have prototype Web Services ... and 
    nowhere had to worry about 
"factories" 
    
As I mentioned, there are an unlimited number of 
    ways to do things.  The 
need for 
    
factories comes only from wanting to link to systems 
    that expect factories. 
You probably never did this. 
    
Let me repeat my request from before:  Describe 
    what must be done to link 
two systems at run time 
    together such that one can start a long term 
process, 
update it later, check its status, 
    and terminate it if necessary.  It is 
from 
    
the dynamics of this linking that the advantages of 
    this approach appear. 
(And think back to the 
    beginning of the OO days when all the programmers 
were pointing out that any program can be written without using 
    OO 
constructs. 
The 
    difference lies not in the program, but in the ability to reuse it in 
    
many different situations.) 
-Keith Swenson 
P.S.  We have some 
    unfinished issue from an earlier conversion.  I was 
hoping that someone else would chime in, but since they have not I 
    will 
follow with a separate message. 
    
-----Original Message----- 
From: 
    Michael Shenfield [mailto:] 
    
Sent: Thursday, November 06, 2003 8:17 AM 
    
To: 'Keith Swenson'; Mayilraj Krishnan; Jeffrey 
    Ricker 
Cc: ASAP 
Subject: RE: 
    [asap] Factory in ASAP 

    
Wow...that's a long email. I had a hard time reading it on 
    my Blackberry at 
breakfast :) 
Now to the point. I don't think anybody argues the importance of 
    "Resource 
Oriented" approach, that's why people 
    define multiple Web Services (and 
ports) instead of 
    offering just one Web Service with a large number of 
operations. Your analogy with object-oriented vs. procedure-oriented? 
    
True...the concepts are related somehow. My question 
    is what it all has to 
do with the Factories? Your 
    example on car repairs only shows that one has 
to 
    define two web services "CarRepairAppointment" and "AccessoryOrder". 
    Your 

    
other example is with 1,200,000,000 operations. Again I am 
    puzzled. Why not 
to have just 4 operations Create, 
    CheckStatus, Change, and Cancel while 
passing an SSN 
    as a parameter(part)? And again what it has to do with the 
"Resource oriented" concept? Am I missing something here? 
    
Let me explain my position on Factory. I don't have 
    any problems with 
somebody implementing the Factory 
    as a web service, I just don't see the 
need for 
    defining one in a standard. We have prototype Web Services 
implemented in .NET, WebLogic, SunONE, and WebSphere and nowhere had 
    to 
worry about "factories" as Web Service access and 
    instantiation is taken 
care by the framework. 
    
I think the mechanism of Web Service instantiation 
    
should be left to framework providers, it's non of 
    the business of Web 
Service developer. The Web 
    Service just have to be there for you when 
accessing 
    the port. As for ASAP specific information it can be easily passed 
    

    
in the header (my "yes" vote) or as a predefined operation 
    (my "no" vote). 
I've been programming COM and EJB 
    for years and was quite happy to see that 
Web 
    Services got rid of programmer-aware "factory" concept, so I don't need 
    
to call coInitialize(Ex), coCreateInstance(Ex), etc. 
    to get my COM interface 

    
or to call EJBHome.create to get my EJBRemote. Why do we 
    need to go back in 
time and define factory for ASAP? 
    Could you find "factory" as a principal 
concept in 
    any mainstream Web Services specification? I am not aware of 
    
any... 
Cheers, 
    
Mike 

    
-----Original Message----- 
From: 
    Keith Swenson [mailto:] 
    
Sent: November 5, 2003 9:02 PM 
To: Michael Shenfield; Mayilraj Krishnan; Jeffrey Ricker 
    
Cc: ASAP 
Subject: RE: [asap] 
    Factory in ASAP 

    
The factory concept is the central concept to this whole 
    approach.  Of 
course, there are an infinite 
    variety of ways that one might approach a 
particular 
    problem.  This particular approach uses a small number of 
    generic 

    
"operations" on a large number of "resources".  The 
    meaning of the operation 

    
depends on the address of the resource.  This is the 
    "Resource Oriented" 
approach.  The other 
    approach is an "Operation Oriented" approach. 
One 
    should not be concerned about the multiplicity of the factories.  The 
    
existance of a factory does not mean that it takes 
    up resources on the host 
machine.  The factory 
    address can have data values encoded into it.  I can, 
if I wish, claim that I have 300 Million factories, one for each 
    person in 
the USA, by making the factory address 
    have a SSN as a parameter (or any 
other 
    disambiguating value) in the address.  I don't have to make 300 
    
million records ahead of time.  There is, then, 
    no reason to try to reduce 
the number of factories, 
    nor is there any basis to equate a minimal number 
of 
    factories to a minimal feature set. 
The WWW 
    functions on this principle of a few operations on a large number of 
    

    
addresses.  For example, instead of using the web, you 
    could define an 
operation to retrieve the basic 
    page, then an operation to retrieve each 
graphic on 
    the page, and another operation to retrieve the style sheet for 
    
the page, etc.  Some people would claim that 
    this is a "good" way to design 
the system because 
    getting the style sheet you use an operation specifically 

    
for getting the style sheet, and what you get back from this 
    operation is 
always a style sheet.  Hence, it 
    is strongly typed.  Instead, the web merely 

    
makes the page, the graphics, and the style sheet have 
    different addresses. 
The same GET operation can be 
    used to get each one.  Plus, I can remain 
confident that if the future brings a new data type that can be 
    embedded in 
a page, the same GET operation can 
    retrieve that data equally well.  Some 
people 
    will complain that to display a page you need to make a number of GET 
    

    
operations instead of one.  True.  Those same 
    people might argue that a 
single XYZ operation would 
    be "simpler".  This is NOT true, because the 
specific information about the XYZ function must be specified some 
    way in 
order to get the basic linking 
    accomplished.  One problem, among many, is 
that 
    servers and browsers need to be upgraded simultaneously in order to 
    get 

    
new capabilities.  Simultaneous upgrade does not happen 
    in the real internet 

    
world. 
Back to ASAP: lets consider a 
    real example.  A car dealer has two 
asynchronous web services: one that people can use to make an 
    appointment at 

    
the garage to get their car repaired, and the other to order 
    a particular 
accessory for a car.  The reason I 
    pick these examples is because they are 
things that 
    have a "duration" -- they persist over time.  There should be no 
    

    
disagreement that for a customer to arrange for a repair 
    appointment some 
data (expressed as XML) needs to be 
    sent from the customer to the car 
dealer, and that 
    for ordering a accessory a different set of data needs to 
be sent.  This discussion then is really just over how to talk 
    about how 
these two pieces of data are 
    different.  Some approaches will make the 
"operation name" be different between the two blocks of data.  
    The ASAP 
approach makes the "address" be different. 
    
For this scenario, using an "Operation Oriented" 
    approach, we could define 
operations for 
    CreateCarRepairAppointment, and CreateAccessoryOrder.  We 
    
would also need to define operations for 
    CheckCarRepairAppointmentStatus, 
CancelCarRepairAppointment, ChangeCarRepairAppointment, 
    
CheckAccessoryOrderStatus, CancelAccessoryOrder, and 
    ChangeAccessoryOrder. 
The instance is automagically 
    created behind the scenes, the correlation is 
encoded somewhere in the data passed.  
Using the "Resource Oriented" approach, we say there is an address 
    for 
"CarRepairAppointment" and a different address 
    for the "AccessoryOrder". 
Specifically, these are 
    the addresses of the factory.  Knowing these 
addresses, we can call the generic CreateInstance operation.  We 
    get an 
instance address which has the correlation 
    information encoded into it.  We 
then can call 
    the generic Cancel (actually Terminate), Check (actually Get), 

    
and Change (actually Set) on the instance. 
As you can see there is a one to one mapping between these two 
    approaches. 
The same number of actual messages is 
    passed, the same amount of data must 
be stored. 
    
The reason for taking the "Resource Oriented" 
    approach becomes more clear 
when you carefully 
    consider what must be done in order to link two systems 
together.  There are systems that are designed to be able to 
    start remote 
asynchronous processes.  They 
    already know about the basic operations: 
Create, 
    Get, Set, and Terminate.  In order to link such a system to the 
    
remote service, you must give it the information to 
    link.  Using the 
resource oriented approach, 
    you only need to give it the address of the 
Factory 
    resource.  On the other hand, using the "Operation Oriented" 
    
approach, you must first tell that system which 
    operation is the create 
operation.  You have to 
    program this somehow.  You must tell it which 
operation is to be used to cancel the remote service.  
    Etc.  
Once you buy into the basic idea that 
    actual operation is a combination of 
an address and 
    a generic operation, there are some very cool things that can 

    
be accomplished very easily:  Imagine that company G 
    build (through any 
means) a system that 
    automatically call the AccessoryOrder operations. 
Company G is a trusted partner who brings a lot of business, so the 
    car 
dealer implements a "Pre Approved Accessory 
    Order" that handles the order in 

    
an expedited manner.  Simply by changing the address of 
    the factory, all the 

    
associated operations are changed congruently, and the 
    system interacts with 

    
the expedited process. 
For this 
    discussion, I used a NamingConvention:  CreateXXX, CheckXXXStatus, 
    
ChangeXXX, and CancelXXX.  This might be an 
    alternative way to get the same 
benefit.  No 
    such naming convention exists.  The naming convention approach 
    
gets really nasty when you want to encode something 
    like a SSN into the 
address.  You would have 
    1,200,000,000 operations.  We can easily 
communicate addresses of a factory, but communicating the names of 
    the 
correct 4 operations from a field of 1.2 billion 
    is somehow less 
comfortable.  Of course you 
    could hide this by having 300M virtual WSDL 
files 
    (generating on demand of course so it does not take any space) but 
    the 

    
linking of operations is normally considered a design time 
    activity.  Most 
systems to call remote 
    processes are not really designed to take a WSDL file 

    
at run time, search out the operation necessary according to 
    a naming 
convention, and then call that 
    operation.  It is messy if you want this kind 

    
of flexibility.  On the other hand, the "Resource 
    Oriented" approach is 
designed for exactly this kind 
    of flexibility. 
In summary, please think carefully 
    about the "DYNAMICS" of linking systems 
at run time 
    as is necessary in a real life internet environment where change 

    
is constant, and the systems you are linking to are not 
    under your control. 
-Keith 
-----Original Message----- 
From: Michael 
    Shenfield [mailto:] 
    
Sent: Wednesday, November 05, 2003 1:47 PM 
    
To: Mayilraj Krishnan; Jeffrey Ricker 
    
Cc: ASAP 
Subject: RE: [asap] 
    Factory in ASAP 

    
I already expressed my concerns about "Factory" concept. In 
    all existing Web 

    
Services platforms that I am aware of the "Factory" is 
    invisible for the WS 
developer and non of her/his 
    concern at the time of development and 
deployment. I 
    think we should step back and define a minimal scope of ASAP 
    
(as agreed at the last two conference calls). I 
    doubt "factory" should make 
it there. 
    
-----Original Message----- 
From: Mayilraj Krishnan [mailto:] 
    
Sent: November 5, 2003 3:32 PM 
To: Jeffrey Ricker; ASAP 
Subject: [asap] 
    Factory in ASAP 

    
So far I have been thinking we need just only one factory 
    for ASAP 
implementation or 
the implementation of services could be conveniently placed under one 
    
logical ASAP factory. 
I have 
    two web services one is check inventory, shipping. Why do I need to 
    
create 
two ASAP factory? I 
    think the ASAP pattern  is generic enough, it can just 
have one factory. 
[In terms of WSDL 1.2 we 
    could map this to one ASAP (soap/transport 
protocol) 
    binding and one feature)] 
Is that a right 
    assumption? 
Thanks 
Mayilraj 
    
At 11:35 AM 11/4/2003 -0500, Jeffrey Ricker wrote: 
    
>I have attached files for describing the current 
    draft of ASAP in WSDL. 
>These are rough draft 
    documents that have not been proofed. 
> 
    
>The asap.xsd describes the payloads 
    
>The asap.wsdl is the basis for all ASAP services 
    
> 
>The concept here is 
    to treat ASAP as a binding. The message structures 
>are all the same, the programmer only has to define the 
    ContextData and 
>the ResultsData elements. 
    
> 
>The 
    checkInventory.wsdl and productLevel.xsd files provide an example of 
    
>this ASAP-as-a-binding approach. 
    
> 
>Ricker 
    
> 
> 
> 
> 
>To 
    unsubscribe from this mailing list (and be removed from the roster of 
    
>the OASIS TC), go to 
>http://www.oasis-open.org/apps/org/workgroup/asap/members/leave_workgroup.p 
    

    
hp. 

    
To unsubscribe from this mailing list (and be removed from 
    the roster of the 

    
OASIS TC), go to 
http://www.oasis-open.org/apps/org/workgroup/asap/members/leave_workgroup.ph 
    

    
p. 

    
To unsubscribe from this mailing list (and be removed from 
    the roster of the 

    
OASIS TC), go to 
http://www.oasis-open.org/apps/org/workgroup/asap/members/leave_workgroup.ph 
    

    
p. 
To unsubscribe from this mailing 
    list (and be removed from the roster of the 
OASIS 
    TC), go to 
http://www.oasis-open.org/apps/org/workgroup/asap/members/leave_workgroup.ph 
    
p. 

    
To unsubscribe from this mailing list (and be removed from 
    the roster of the OASIS TC), go to http://www.oasis-open.org/apps/org/workgroup/asap/members/leave_workgroup.php.