 |
|
 |
|
08-24-04 11:57 PM
Hi,
I'm currently working on a BT orchestration and was hoping to get some
advice about correlation. I basically have a process where people may
request multiple quotes before moving onto an application. The first thing
that happens in my orchestration, therefore, is that I get a quote request
and return a quote response. The quote request is an activating receive and
so everytime I call it I get a new process even if I want to use an existing
one. I'd ideally like to be able to say 'if there's an existing
orchestration that matches the data then use that otherwise start another'
but am not sure if this is possible.
Is there any way of checking correlation data for existing processes before
starting another one and initializing the correlation set again?
Thanks
Ian
[ Post a follow-up to this message ]
|
|
|
 |
|
 |
|
 |
|
08-24-04 11:58 PM
Hi Ian,
You need to:
Define someting that the orchestration can use to correlate the inbond
messages (this could be a field in the inbound message).
Create a property schema containg this field, and promote your field in the
schema.
In your orchestration define a correlation type and set using the property
schema.
In your first receive, initialise your correlation set, subsequent receive
shapes should be set to follow this correlation set.
You also need to decide when to stop correlating the messages, this could be
a loop count or a timeout.
There's an example of correlation in the second BizTalk tutorial, I also use
correlation in the Aggregator pattern on my blog.
Shout if you need more help...
/Alan
BizTalk Patterns and Practices
http://geekswithblogs.com/asmith
"ian.thomas@online.nospam" wrote:
> Hi,
>
> I'm currently working on a BT orchestration and was hoping to get some
> advice about correlation. I basically have a process where people may
> request multiple quotes before moving onto an application. The first thin
g
> that happens in my orchestration, therefore, is that I get a quote request
> and return a quote response. The quote request is an activating receive a
nd
> so everytime I call it I get a new process even if I want to use an existi
ng
> one. I'd ideally like to be able to say 'if there's an existing
> orchestration that matches the data then use that otherwise start another'
> but am not sure if this is possible.
>
> Is there any way of checking correlation data for existing processes befor
e
> starting another one and initializing the correlation set again?
>
> Thanks
>
> Ian
[ Post a follow-up to this message ]
|
|
|
 |
|
 |
|
 |
|
08-24-04 11:58 PM
Hi Ian,
This is definitely possible. There are a few things that you have keep in
mind before-hand. Firstly you have to make a choice between sequential
convoys and parallel convoys. You need a correlation parameter. ie a
quantity that can ideantify a set of messages to be one group. In case you
use a sequential convoy with an activating receive which initializes a
correlation set, followed by a loop of non-activate receives, which follow
the above correlation set, then you need an end condition, ie when does the
orchestration stop listening for more messages and gets on with its task.
One thing to keep is mind is that, whatever parameter you put in the
correlation set, becomes a part of the orchestration's subscription
evaluation criteria, so make sure that those properties are promoted when
the message enters the message-box.
Regards
Dev
<ian.thomas@online.nospam> wrote in message
news:97C578DA-F342-4938-95B7-DE24BB90B3BF@microsoft.com...
> Hi,
>
> I'm currently working on a BT orchestration and was hoping to get some
> advice about correlation. I basically have a process where people may
> request multiple quotes before moving onto an application. The first
thing
> that happens in my orchestration, therefore, is that I get a quote request
> and return a quote response. The quote request is an activating receive
and
> so everytime I call it I get a new process even if I want to use an
existing
> one. I'd ideally like to be able to say 'if there's an existing
> orchestration that matches the data then use that otherwise start another'
> but am not sure if this is possible.
>
> Is there any way of checking correlation data for existing processes
before
> starting another one and initializing the correlation set again?
>
> Thanks
>
> Ian
[ Post a follow-up to this message ]
|
|
|
 |
|
 |
|
 |
|
08-25-04 09:19 AM
Devdutt,
Thanks for the response - it sounds promising but I was hoping you could
give me a bit more information on how it would work given my current pitiful
level of knowledge :-)
Is what you're suggesting that I would have a listen at the start of my
orchestration with one receive being an activating one and the other a
non-activating? Would I then bind both to the same port as they both need t
o
accept the same message but consume the message based on whether there was
already an existing orchestration? Would I do this by setting the first
receive to initialize the correlation set and the alternative receive to
follow that set? I seem to remember (probably incorrectly) that if one
receive within a listen is an activating receive then they all have to be.
Or is there another way to set this up?
Thanks again,
Ian
"Devdutt Patnaik" wrote:
> Hi Ian,
>
> This is definitely possible. There are a few things that you have keep in
> mind before-hand. Firstly you have to make a choice between sequential
> convoys and parallel convoys. You need a correlation parameter. ie a
> quantity that can ideantify a set of messages to be one group. In case you
> use a sequential convoy with an activating receive which initializes a
> correlation set, followed by a loop of non-activate receives, which follow
> the above correlation set, then you need an end condition, ie when does th
e
> orchestration stop listening for more messages and gets on with its task.
>
> One thing to keep is mind is that, whatever parameter you put in the
> correlation set, becomes a part of the orchestration's subscription
> evaluation criteria, so make sure that those properties are promoted when
> the message enters the message-box.
>
> Regards
> Dev
>
> <ian.thomas@online.nospam> wrote in message
> news:97C578DA-F342-4938-95B7-DE24BB90B3BF@microsoft.com...
> thing
> and
> existing
> before
>
>
>
[ Post a follow-up to this message ]
|
|
|
 |
|
 |
|
 |
|
08-25-04 09:19 AM
Alan,
Thanks for your response. The thing I'm struggling with, though, is that I
almost want my activating receive to both initialise and follow a correlatio
n
set as if someone has already called the receive shape and has the correct
data in the message then I want to correlate it back to the receive shape in
the _same instance_ of the orchestration that they have already started. Th
e
problem at the moment is that if they call the same port a second time then
I
get lots of spurious instances of the orchestration (one for each call). Is
there any way to do this?
Thanks again
Ian
"Alan Smith" wrote:
[vbcol=seagreen]
> Hi Ian,
>
> You need to:
>
> Define someting that the orchestration can use to correlate the inbond
> messages (this could be a field in the inbound message).
> Create a property schema containg this field, and promote your field in th
e
> schema.
> In your orchestration define a correlation type and set using the property
> schema.
> In your first receive, initialise your correlation set, subsequent receive
> shapes should be set to follow this correlation set.
> You also need to decide when to stop correlating the messages, this could
be
> a loop count or a timeout.
>
> There's an example of correlation in the second BizTalk tutorial, I also u
se
> correlation in the Aggregator pattern on my blog.
>
> Shout if you need more help...
>
> /Alan
>
> BizTalk Patterns and Practices
> http://geekswithblogs.com/asmith
>
>
>
> "ian.thomas@online.nospam" wrote:
>
[ Post a follow-up to this message ]
|
|
|
 |
|
 |
|
 |
|
08-25-04 10:53 PM
There's not a direct way to do this that I'm aware of Ian. You can't have
the activation receive already be correlating on some value. The
correlation has to be initialized before we can follow it.
There has to be some process that kicks off the orchestration, then a send
that initializes the correlation set and a receive that follows it. You
could possibly start it with a dummy record and then just have a loop of
send/receive that does the actual processing. You still need some way of
determining when to kick off a new orchestration as opposed to just passing
a value into one.
Correlation is intended as a way to allow us to send data from an
orchestration and get the response back into the orchestration that
originally sent it. It almost sounds like you want a dedicated process
spun up per-user and maintained until some action causes the process to
terminate, which isn't exactly a match of the correlation process.
Larry Franks
This posting is provided "AS IS" with no warranties,and confers no rights.
Subscribe at
http://support.microsoft.com/defaul...msdn/nospam.asp
&SD=msdn
--------------------
| Thread-Topic: Correlation
| thread-index: AcSKeWYo2/ABifDIR+mXuPvgdk/yOA==
| X-WBNR-Posting-Host: 194.63.116.72
| From: examnotes
<ian.thomas@online.nospam>
| References: <97C578DA-F342-4938-95B7-DE24BB90B3BF@microsoft.com>
<5768C427-24E3-44E3-B9EB-904BD5A04111@microsoft.com>
| Subject: RE: Correlation
| Date: Wed, 25 Aug 2004 00:59:08 -0700
| Lines: 64
| Message-ID: <FAC18AEB-FBB5-41FA-BC1B-E93DEF1C83E0@microsoft.com>
| MIME-Version: 1.0
| Content-Type: text/plain;
| charset="Utf-8"
| Content-Transfer-Encoding: 7bit
| X-Newsreader: Microsoft CDO for Windows 2000
| Content-Class: urn:content-classes:message
| Importance: normal
| Priority: normal
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| Newsgroups: microsoft.public.biztalk.orchestration
| NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.1.29
| Path: cpmsftngxa10.phx.gbl!TK2MSFTNGXA03.phx.gbl
| Xref: cpmsftngxa10.phx.gbl microsoft.public.biztalk.orchestration:7851
| X-Tomcat-NG: microsoft.public.biztalk.orchestration
|
| Alan,
|
| Thanks for your response. The thing I'm struggling with, though, is that
I
| almost want my activating receive to both initialise and follow a
correlation
| set as if someone has already called the receive shape and has the
correct
| data in the message then I want to correlate it back to the receive shape
in
| the _same instance_ of the orchestration that they have already started.
The
| problem at the moment is that if they call the same port a second time
then I
| get lots of spurious instances of the orchestration (one for each call).
Is
| there any way to do this?
|
| Thanks again
|
| Ian
|
| "Alan Smith" wrote:
|
| > Hi Ian,
| >
| > You need to:
| >
| > Define someting that the orchestration can use to correlate the inbond
| > messages (this could be a field in the inbound message).
| > Create a property schema containg this field, and promote your field in
the
| > schema.
| > In your orchestration define a correlation type and set using the
property
| > schema.
| > In your first receive, initialise your correlation set, subsequent
receive
| > shapes should be set to follow this correlation set.
| > You also need to decide when to stop correlating the messages, this
could be
| > a loop count or a timeout.
| >
| > There's an example of correlation in the second BizTalk tutorial, I
also use
| > correlation in the Aggregator pattern on my blog.
| >
| > Shout if you need more help...
| >
| > /Alan
| >
| > BizTalk Patterns and Practices
| > http://geekswithblogs.com/asmith
| >
| >
| >
| > "ian.thomas@online.nospam" wrote:
| >
| > > Hi,
| > >
| > > I'm currently working on a BT orchestration and was hoping to get
some
| > > advice about correlation. I basically have a process where people
may
| > > request multiple quotes before moving onto an application. The first
thing
| > > that happens in my orchestration, therefore, is that I get a quote
request
| > > and return a quote response. The quote request is an activating
receive and
| > > so everytime I call it I get a new process even if I want to use an
existing
| > > one. I'd ideally like to be able to say 'if there's an existing
| > > orchestration that matches the data then use that otherwise start
another'
| > > but am not sure if this is possible.
| > >
| > > Is there any way of checking correlation data for existing processes
before
| > > starting another one and initializing the correlation set again?
| > >
| > > Thanks
| > >
| > > Ian
|
[ Post a follow-up to this message ]
|
|
|
 |
|
 |
|
 |
|
08-25-04 10:53 PM
Hi,
> Is what you're suggesting that I would have a listen at the start of my
> orchestration with one receive being an activating one and the other a
> non-activating? Would I then bind both to the same port as they both need
to
> accept the same message but consume the message based on whether there was
> already an existing orchestration? Would I do this by setting the first
> receive to initialize the correlation set and the alternative receive to
> follow that set?
That's correct Ian.
/Alan
"ian.thomas@online.nospam" wrote:
[vbcol=seagreen]
> Devdutt,
>
> Thanks for the response - it sounds promising but I was hoping you could
> give me a bit more information on how it would work given my current pitif
ul
> level of knowledge :-)
>
> Is what you're suggesting that I would have a listen at the start of my
> orchestration with one receive being an activating one and the other a
> non-activating? Would I then bind both to the same port as they both need
to
> accept the same message but consume the message based on whether there was
> already an existing orchestration? Would I do this by setting the first
> receive to initialize the correlation set and the alternative receive to
> follow that set? I seem to remember (probably incorrectly) that if one
> receive within a listen is an activating receive then they all have to be.
> Or is there another way to set this up?
>
> Thanks again,
>
> Ian
> "Devdutt Patnaik" wrote:
>
[ Post a follow-up to this message ]
|
|
|
 |
|
 |
|
 |
|
08-25-04 10:53 PM
Hi Ian,
You are right most of the way. Bust just to make things clear, I have posted
a small sample here. Take a look.
http://devdutt10.blogspot.com/
Regards
Dev
<ian.thomas@online.nospam> wrote in message
news:92BC1D30-573C-49DC-8CBA-362D888B1772@microsoft.com...
> Devdutt,
>
> Thanks for the response - it sounds promising but I was hoping you could
> give me a bit more information on how it would work given my current
pitiful
> level of knowledge :-)
>
> Is what you're suggesting that I would have a listen at the start of my
> orchestration with one receive being an activating one and the other a
> non-activating? Would I then bind both to the same port as they both need
to[vbcol=seagreen]
> accept the same message but consume the message based on whether there was
> already an existing orchestration? Would I do this by setting the first
> receive to initialize the correlation set and the alternative receive to
> follow that set? I seem to remember (probably incorrectly) that if one
> receive within a listen is an activating receive then they all have to be.
> Or is there another way to set this up?
>
> Thanks again,
>
> Ian
> "Devdutt Patnaik" wrote:
>
in[vbcol=seagreen]
you[vbcol=seagreen]
follow[vbcol=seagreen]
the[vbcol=seagreen]
task.[vbcol=seagreen]
when[vbcol=seagreen]
request[vbcol=seagreen]
receive[vbcol=seagreen]
another'[vbcol=seagreen]
[ Post a follow-up to this message ]
|
|
|
 |
|
 |
|
 |
|
08-25-04 10:53 PM
Alan/Devdutt/Larry,
Thanks very much for your responses. Although it seems that I can't do the
very simplistic thing I had in my head it looks like I can get the same
effect by using the examples from your blog links and bind two different
receives to the same port at different points in the orchestration (which
will solve my problem OK).
Thanks again
Ian
"ian.thomas@online.nospam" wrote:
> Hi,
>
> I'm currently working on a BT orchestration and was hoping to get some
> advice about correlation. I basically have a process where people may
> request multiple quotes before moving onto an application. The first thin
g
> that happens in my orchestration, therefore, is that I get a quote request
> and return a quote response. The quote request is an activating receive a
nd
> so everytime I call it I get a new process even if I want to use an existi
ng
> one. I'd ideally like to be able to say 'if there's an existing
> orchestration that matches the data then use that otherwise start another'
> but am not sure if this is possible.
>
> Is there any way of checking correlation data for existing processes befor
e
> starting another one and initializing the correlation set again?
>
> Thanks
>
> Ian
[ Post a follow-up to this message ]
|
|
|
 |
|
 |
|
 |
|
|
|
Sponsored Links |
 |
 |
|
|
 |
All times are GMT. The time now is 09:31 AM. |
 |
|
|
 |
|
 |
|
|
 |
|
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is OFF
|
|
|
|
Medical and Health forum | Computer Games Reviews | Graphics design forum
|
 |
|
 |
|