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

 


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-bp message

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


Subject: Re: [ebxml-bp] Manual Operations in BPSS"


Comments inline:

martin.me.roberts@bt.com wrote:

>How do you know what state your BPSS is in?
>
[DN] I will answer this from our architectural vision.  Your BPSS is a 
map to a complete set of possible paths though a business process.  This 
includes a marker for each signal (transaction)  that will be sent 
between the parties of a process.  When each transaction is sent, sent 
and received or sent and failed, there is both an "initializing" state 
and a "advanced to" state.

Both parties must know where to start.  We'll arbitrarily call that 
point "State 0" for the sake of this email.  From State 0, a party that 
assumes one of the roles is possibly the only one that can send the next 
message.  When that party sends a message, the BP execution engine must 
initiate a Conversation ID that will be referencable from each and every 
transaction that takes place within this specific business process. 
 Conversation ID is the primary key for tracking the state of any 
business process.  

Let's say for arguments sake, the first transaction is called "foo" and 
it can only be entered from a state of State 0. The BP instance is 
referenced via a CPA instance document.  That CPA instance document has 
a set of signals and values that are affixed to those signals and how 
they must be treated.  It specifies that when Foo is sent, each party 
MUST keep a complete copy of  foo in their persistent message store for 
XXX amount of time.  Let's say this value is 7 days.

When A sends B the foo transaction, each has a copy of it inside their 
persistent message store.  If either wants to calculate the state of the 
transaction, they use the Conversation ID as the primary key to do so. 
 They talk to the messaging layer via the API and say (in effect) please 
give me the information I need for all messages with a conversation ID 
of XXX.   By combining that set of information with the roadmap of the 
process, state can be calculated.  They should also be able tell what 
the next "allowable" steps are in the process.  From the given state, 
they can go a number of next steps.    For instance, if it is deduced 
that the state is "PO sent and Accepted", then the next messages that 
are allowable may be either the purchased sending in a "Change Order 
Request" or the Seller Role sending in a "shipping advice" notification 
to the Buyer, at which time a change order request may no longer be 
acceptable as a next step.

For sake of argument, let's say that A has sent B the Foo transaction 
and then A's system crashes.  When A bring his system back up, he must 
be able to calculate the last known state by accessing all messages from 
the persistent message store.  This creates an implementation Best 
practice that the persistent message store should ensure that messages 
are safe from corruption.  If B has tried to send the reply or response 
back to the foo message when A's system is down, B will fail.  When A is 
back up, if the time to perform has not expired, B may still send the 
foo response message back.  If it has expired, then both parties must 
roll back the entire process to where they agreed it should go.  This 
creates a requirement that any BP script must be abel to express that.

The complexity of the state alignment is more complicated than it at 
first appears.  In the example above, there is the potential for a state 
misalignment based on missing a transport level acknowledgment and a 
business level ack coming back first.. If the system that receives the 
foo message sends back a business level acknowledgment, that should take 
precedence over any other signals, including a transport layer ack in my 
opinion.

The entire ebXML stack is a synergistic approach with the largest 
benefit being realized when the stack is complete.  Using the ebXML MS 
by itself does not solve many business problems but is capable of the 
functionality needed for complicated state alignment required to 
constrain complex processes over time.  SOAP does not provide this 
capability.  

It may be beneficial to create some formal documentation around this 
subject.  I had started preparing a 4 hour tutorial talk for XML Europe 
2004 on this very subject however it was rejected.  Perhaps this work 
should be illustrated to make it easier to understand?

Duane
They send the first message

>
>For us in BT we have used forks and joins with names to indicate states.
>This means that we could exchange with our partner through an out of
>band collaboration, where each of our collaborations is.  The customer
>could also send us that information.  Depending on who gets there first
>we could replay any transactions or agree to leap to a named state.
>
>Very simple but effective.  No replay required but you now have two
>gateways/systems stacks aligned.
>
>What do you think?
>
>Martin Roberts 
>xml designer, 
>BT Exact
>e-mail: martin.me.roberts@bt.com 
>tel: +44(0) 1473 609785  clickdial
>fax: +44(0) 1473 609834
>Intranet Site :http://twiki.btlabs.bt.co.uk/twiki
>
>
>  
>

-- 
Senior Standards Strategist
Adobe Systems, Inc.
http://www.adobe.com





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