|
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:
|
|
|
|
|