11-21-05 07:48 AM
Hello.
There are a few different ways to go about it.
In the past, I have typically built this all into your main Orchestration
and had the Orchestration keep the status of that message. Then, when a
problem occurs that step is marked as error. So, when the message is
reprocessed it will only go to this step. This approach uses a convoy.
Reprocess message come in through a different port so they could be
identified. After the fact, this turned out to be a lot of overhead and
seemed to add a lot of complexity.
If I had it to do over, I would add additional optional attributes to my
message. I would keep the Orchestration stateless and un-convoyed – let t
he
message track status. When a process has a problem, a file would be written
to disk making it as needed. So, when it is reprocessed it would only be
sent to the required steps. Every message would do into the top of the
Orchestration and Decision shapes would be used to determine if the branch
needed to be run.
You could take this one further and separate out your different steps into
separate Orchestrations. Then, use content based routing to send messages t
o
each Orchestration either in order or all at once. I saw a demo doing
something like this using the Rules Engine.
Hope this helps.
Stephen W. Thomas
http://www.biztalkgurus.com
http://geekswithblogs.net/sthomas/
"walter" wrote:
> Hi there, we have a case that need to restart the orchestration from the
> point that it fails.The situation is that we have a orch which reference 3
-6
> services.When one of the services fails , after the problem is fixed, we w
ant
> the orch to start from the failure point instead of running from the
> beginning. This is because most of time the problem is system-related ,not
> business-related.
>
> Well , I can make the orch to check if the step has been processed in the
> earlier run, but I'm wondering if there is any other way.
>
> Any inspiration is appreciated.
[ Post a follow-up to this message ]
|