I think the analogy with variable
initialization works more in favor of removing the attribute than it does in
preserving it. Variable initialization is a core part of the language and is
defined as part of the spec. The BPEL language provides a way of specifying an
initial value for a variable and the decision to use this construct is pretty
easy. It is 100% portable and is easy to understand in all cases.
Setting a value for the
initializePartnerRole attribute requires an understanding of the specific service-ref
implementation for the process as well as its deployment environment. Neither
of these two are covered in the specification. In the example I gave, it seems
reasonable that the intent is to use WS-Addressing to init the partner link’s
partnerRole but there is nothing in the BPEL to confirm it. This leads me back
to my basic objection which is an attribute which serves as a hint to something
we haven’t specified.
From: Alex Yiu [mailto:alex.yiu@oracle.com]
Sent: Saturday, November 04, 2006
5:09 PM
To: wsbpel@lists.oasis-open.org;
Mark Ford
Cc: Alex Yiu
Subject: Re: [wsbpel] Issue - R29
- Partner link's initializePartnerRole attribute
Hi Mark,
Sorry ... I am not sure I would agree with your particular proposal on removing
initializePartnerRole attribute.
The "initializePartnerRole" attribue is used to provide an intent
contract point between the BPEL process definition and the rest of SOA system.
One of this intent contract point usage is as the input of the deployement
mechanism. Their usage of this intent contract point affects the process design
as well. (See below)
And, the "initializePartnerRole" attribue does create consequence of
runtime behavior of the process. For example, if
"initializePartnerRole" is set to "yes" on a particular
declaration, then we are guaranteed that
"bpel:uninitializedPartnerRole" fault will not be thrown.
>From this perspective, this "initializePartnerRole" feature is
similar to the inline variable initialization. When a variable is initialized
inline, then we are guaranteed that accessing to that variable will not trigger
any "bpel:uninitializedVariable" fault. The only difference is: inline
variable initialization has value specified inside the process, while the
partnerRole value is specified outside the process. (For all practical reasons
to make the process more portable, the epr value of partnerRole has to be
outside the process.)
Regarding to the example in your bullet point #3, if the process first receives
a message on partnerLink PL1 and send another message out on the same
partnerLink PL2 later:
- if the process definition does not have any
explicit logic to initialize the partnerRole, and "initializePartnerRole"
is set to "no", then static analysis on a process definition may
be able to deduce that WS-Addressing like mechanism may be needed in the
deployment binding.
- Otherwise (i.e. if the process definition does
have some explicit logic to initialize the partnerRole, or the
"initializePartnerRole" is set to "yes")
WS-Addressing-like binding may not be needed. If it is the latter case
("initializePartnerRole" is yes"), the designer of a
process definition is essentially asking the WS-processor to obtain an epr
first before that partnerLink is actively used.
In summary, "initializePartnerRole" is a very handy tool to
disambiguate the intent of the process designer and bridges the process
definition with other parts of SOA system nicely. And, it does have runtime
behavior impact (as stated above). Therefore, removing this attribute does not
seem to be a good move.
However, I do agree with you that we want to review our sample process (such as
the ones in Section 15.3.2) to see whether initializePartnerRole is needed to
be set.
Thanks!
Regards,
Alex Yiu
ws-bpel issues list editor wrote:
This
issue has been added to the wsbpel issue list with a status of
"received". The status will be changed to "open" if a
motion to open the issue is proposed and that motion is approved by the TC. A
motion could also be proposed to close it without further consideration.
Otherwise it will remain as "received".
The
issues list is posted as a Technical Committee document to the OASIS WSBPEL TC
pages on a regular basis. The current edition, as a TC document, is the
most recent version of the document entitled in the "Issues" folder
of the WSBPEL
TC document list - the next posting as a TC document will include this
issue. The list editor's working copy, which will normally include an issue
when it is announced, is available at this
constant URL.
Issue - R29 - Partner link's initializePartnerRole attribute
Status: received
Date added: 2 Nov 2006
Date submitted: 02 November 2006
Submitter: Mark Ford
Description: The purpose of the
initializePartnerRole attribute on a partner link is to identify any partner
links that the process will not initialize through an assign or some EPR scheme
like the “reply-to” feature in WS-Addressing. These partner links
must be initialized by some infrastructure logic specific to the processor.
This logic is out of the scope of the specification but Section 6.2 suggests
that it may take place during the deployment of the process.
There
are a few problems with the attribute as it exists today.
- It is only used during deployment which is
something that is not covered by the specification.
- There is no difference in the runtime behavior of
the process if this attribute is “yes” or “no”.
Why do we have an attribute that doesn’t affect runtime behavior?
- It may not be meaningful to process designers
since the initialization of the partner role could occur through some
mechanism outside of the WS-BPEL process like a reply-to in WS-Addressing.
For example, if I am designing a process that receives data and then does
an invoke on the same partner link, should I set the value of the
initializePartnerRole attribute to “yes” or “no”.
If I’m expecting the processing of the receive to update the partner
link with a reply-to endpoint then I can set it to “no”. If I
expect that the deployment packaging will provide me with an endpoint then
I should set it to “yes”. It seems possible that I may not
know the exact bindings at the time of the process creation.
It
is also worth noting that the sample process in Section 15.3.2 defines two
partner links without specifying the value of the initializePartnerRole
attribute. It seems unlikely that WS-Addressing would be used to initialize the
partner roles for these two partner links since they are only used for invokes.
Submitter's proposal:
Remove
the attribute altogether from the partner link. This would affect about 3
paragraphs in Section 6.2 along with the appendix for default values and the
schema.
Changes: 2 Nov 2006 - new issue
To
comment on this issue (including whether it should be accepted), please
follow-up to this announcement on the wsbpel@lists.oasis-open.org list
(replying to this message should automatically send your message to that list),
or ensure the subject line as you send it starts
"Issue - R29 - [anything]" or is a reply to such a message. If you
want to formally propose a resolution to an open issue, please start the
subject line "Issue - R29 - Proposed resolution", without any Re: or
similar.
To
add a new issue, see the issues procedures document