BizTalk Server Orchestration - Suspend Shape inside LR scopes

This is Interesting: Free IT Magazines  
Home > Archive > BizTalk Server Orchestration > February 2006 > Suspend Shape inside LR scopes





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author Suspend Shape inside LR scopes
João Martins

2006-02-01, 7:50 am

Hello again,

I am trying to implement a retry pattern inside a compensation shape, so
that the compensation code is retried (in a Loop) a specified number of
times. In every failed attempt at compensation, I suspend the Orchestration
using the Suspend Shape.

I am implementing the pattern as described here:
http://biztalkblogs.com/satishv278/...5/12/26/79.aspx

My problem is: I have an Atomic Shape with a compensation block.
In the compensation block, I can use the Suspend shape. However, if I add a
Long Running scope inside the compensation block, BizTalk doesn't allow me to
add the Suspend shape inside it.

The documentation says that "You cannot place a Suspend shape inside an
atomic transaction", but what is not working is adding it in the Long Running
Transaction.

What's wrong?

João Martins

João Martins

2006-02-01, 5:56 pm

Actually, it's worse than I thought. If I have an Atomic scope with an
Exception handler, I can add the Suspend Shape to the Exception handler
freely. If, however, I add even a simple Group Shape (i.e., it's not limited
to the LR Scope shape like I assumed in my original post), I can't use the
Suspend Shape inside it!

Note that this happens in both Bts2004 Sp1 and Bts2006 beta2, so I assume
it's intentional, I just can't understand the rationale.

The way around this weird behaviour is simple, if un-elegant: create a
second orchestration with a single Suspend Shape, receiving the suspend
message as a parameter. And in the original orchestration, do a Call
Orchestration where the Suspend shape would have been. This solution seems to
work fine.

Thanks anyway,
João Martins

"João Martins" wrote:
> Hello again,
>
> I am trying to implement a retry pattern inside a compensation shape, so
> that the compensation code is retried (in a Loop) a specified number of
> times. In every failed attempt at compensation, I suspend the Orchestration
> using the Suspend Shape.
>
> I am implementing the pattern as described here:
> http://biztalkblogs.com/satishv278/...5/12/26/79.aspx
>
> My problem is: I have an Atomic Shape with a compensation block.
> In the compensation block, I can use the Suspend shape. However, if I add a
> Long Running scope inside the compensation block, BizTalk doesn't allow me to
> add the Suspend shape inside it.
>
> The documentation says that "You cannot place a Suspend shape inside an
> atomic transaction", but what is not working is adding it in the Long Running
> Transaction.
>
> What's wrong?
>
> João Martins
>

João Martins

2006-02-01, 5:56 pm

Corrected post:

> Actually, it's worse than I thought. If I have an Atomic scope with a
> COMPENSATION block, I can add the Suspend Shape to the COMPENSATION block
> freely. If, however, I add even a simple Group Shape (i.e., it's not limited
> to the LR Scope shape like I assumed in my original post), I can't use the
> Suspend Shape inside it!
>
> Note that this happens in both Bts2004 Sp1 and Bts2006 beta2, so I assume
> it's intentional, I just can't understand the rationale.
>
> The way around this weird behaviour is simple, if un-elegant: create a
> second orchestration with a single Suspend Shape, receiving the suspend
> message as a parameter. And in the original orchestration, do a Call
> Orchestration where the Suspend shape would have been. This solution seems to
> work fine.




[vbcol=seagreen]
>
> Thanks anyway,
> João Martins
>
> "João Martins" wrote:
Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com