|
Home > Archive > BizTalk Server Orchestration > November 2005 > Listen shape problem
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 |
Listen shape problem
|
|
| kplkumar@gmail.com 2005-11-18, 5:52 pm |
| I have an orchestration I am exposing as a webservice. I have a port
with multiple operations denoting multiple web methods.
I have a listen shape with each branch having a receive and send shape.
When I actually publish the webservice and deploy my orchestration, and
when I call any web method, the call always goes to the first branch.
I know we can create a filter expression in the receive shapes.
Can someone tell me how to specify the filter expression for routing it
to a different branch based on the operation?
I have been trying to use the BTS.Operation filter, but I do not know
how to specify the expression. I tried doing, for example,
"port.operation1" then I tried "operation1". None of these worked.
Help!!
| |
| Matt Milner 2005-11-18, 5:52 pm |
| If I were to guess, I'd say that all of your methods receive the same type
for the parameter?
If that is the case, it might be easier to have one receive, and then use
the decide shape to branch based on the operation specified in the context
properties. BizTalk routing works at the port level and not the operation
level, so the message will get routed to the port, but once there, if the
message types are the same it is difficult to know which receive shape
should get the message, so you see what you have.
Matt
<kplkumar@gmail.com> wrote in message
news:1132331617.863462.71550@g43g2000cwa.googlegroups.com...
>I have an orchestration I am exposing as a webservice. I have a port
> with multiple operations denoting multiple web methods.
> I have a listen shape with each branch having a receive and send shape.
> When I actually publish the webservice and deploy my orchestration, and
> when I call any web method, the call always goes to the first branch.
> I know we can create a filter expression in the receive shapes.
>
> Can someone tell me how to specify the filter expression for routing it
> to a different branch based on the operation?
> I have been trying to use the BTS.Operation filter, but I do not know
> how to specify the expression. I tried doing, for example,
> "port.operation1" then I tried "operation1". None of these worked.
>
> Help!!
>
| |
| Jason Agostoni 2005-11-19, 7:47 am |
| Matt is correct ... my guess is that both of your operations are
received the same namespace message an so BizTalk finds the first
matching branch. As Matt said, BizTalk works at the port level not the
operation level (which throws you and me both off). Either change one
of your message namespaces to be different or use two different ports.
| |
| kplkumar@gmail.com 2005-11-21, 5:51 pm |
| This is what I did.
I created a schema in my biztalk project. I then promoted some of the
properties. In my case,
HeaderSchema.xsd where I had promoted MessageType and EventType.
Then I created multipart messages for each of the incoming branches'
receive shape and added this schema to be one of the parts, besides the
actual message that I will be receiving in that receive shape.
Then, in the receive shape I added filter expression, where I said
MessageType=="something1" AND EventType=="something2" for receive shape
in the first branch and, MessageType=="something3" AND
EventType=="something4" for receive shape in the second branch and so
on for each branch's receive shape.
You can then publish the orchestration as a web service and then while
calling the webmethod add another paramter, which is of type header
schema and enter your values there. For the first method (branch 1) set
the property values of the header schema object to be
MessageType=="something1" and EventType=="something2", then set this
value for each and every web method call. This way the listen shape
will know which branch to forward it to based on the filter specified
in the receive shape.
I know this is not the greatest way to do this, however with the
limitations in documentation and help from microsoft on this sucker
"BizTalk" this is all we could come up with.
|
|
|
|
|