|
Home > Archive > BizTalk Server > April 2006 > BTS2006 not filtering on decimal
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 |
BTS2006 not filtering on decimal
|
|
|
| I am having a problem filtering in Send port in BizTalk Server 2006
I have a schema on which I promoted a decimal element (named
TotalCompensation, datatype xs:decimal) through a PropertySchema. In the
property schema the element is a decimal as well.
I have a receive port which receives an instance of that schema. I use the
XMLReceive pipeline on the location so promoted elements are copied to the
message context.
I have 2 send ports:
Port 1 filters on the name of the Receive Port and on
MySchemas.TotalCompensation <= 500
Port 2 filters on the name of the Receive Port and on
MySchemas.TotalCompensation > 500
That is: Send port one should pick up the "cheap" ones (less than 500) and
the "expensive" ones should be picked up by send port 2.
I then send in a message with TotalCompensation less than 500 and Send port
1 picks it up as expected
Now I send a messsage with TotalCompensation greater than 500 (1300.95), but
this time it is also picked up by send port 1.
I thought it was doing a string compare so I sent in with TotalCompensation
equal to 7300.95, but still it is picked up by send port 1
I tried changing the filter value on both ports from 500 to 500.00 - again
no result.
Please help me figuring out what I'm doing wrong.
| |
|
| I just tried out on integers (xs:int) - same result.
"Søren" wrote:
> I am having a problem filtering in Send port in BizTalk Server 2006
>
> I have a schema on which I promoted a decimal element (named
> TotalCompensation, datatype xs:decimal) through a PropertySchema. In the
> property schema the element is a decimal as well.
>
> I have a receive port which receives an instance of that schema. I use the
> XMLReceive pipeline on the location so promoted elements are copied to the
> message context.
>
> I have 2 send ports:
>
> Port 1 filters on the name of the Receive Port and on
> MySchemas.TotalCompensation <= 500
> Port 2 filters on the name of the Receive Port and on
> MySchemas.TotalCompensation > 500
>
> That is: Send port one should pick up the "cheap" ones (less than 500) and
> the "expensive" ones should be picked up by send port 2.
>
> I then send in a message with TotalCompensation less than 500 and Send port
> 1 picks it up as expected
> Now I send a messsage with TotalCompensation greater than 500 (1300.95), but
> this time it is also picked up by send port 1.
> I thought it was doing a string compare so I sent in with TotalCompensation
> equal to 7300.95, but still it is picked up by send port 1
>
> I tried changing the filter value on both ports from 500 to 500.00 - again
> no result.
>
> Please help me figuring out what I'm doing wrong.
| |
| Michael Elizarov [MSFT] 2006-04-27, 7:25 am |
| Stop the sendport so that the message is automatically suspended. Go into
the MMC HubPage, find the suspended instance, go to the suspended message
and look into its context at the promoted properties and see what is really
being promoted. That should tell you why it is being routed the way it is.
--------------------[vbcol=seagreen]
the[vbcol=seagreen]
the[vbcol=seagreen]
the[vbcol=seagreen]
and[vbcol=seagreen]
port[vbcol=seagreen]
(1300.95), but[vbcol=seagreen]
TotalCompensation[vbcol=seagreen]
again[vbcol=seagreen]
| |
|
| Yes - that was a help (and very useful in future)
I could see that the promoted field was promoted as it should (with value
7300). So I made a query on subscriptions and could see the filter value was
50000 and not 500. On the send port the filter was 500.00, so this is
apparently interpreted as 50000. The decimal was from a previous attempt and
removing it (writing 500 instead of 500.00) solved the problem and
subscription is now working as expected for INT
Then I went back to decimals (my original setup) and now this was working
perfectly as well :-)
So I think nothing was wrong, I had just ended up in some weird situation
where it wasen't (maybe my decimals on the port filter was cached, so now I
set Cache Refresh to 1 second, development only of course).
Thanx, Søren
"Michael Elizarov [MSFT]" wrote:
> Stop the sendport so that the message is automatically suspended. Go into
> the MMC HubPage, find the suspended instance, go to the suspended message
> and look into its context at the promoted properties and see what is really
> being promoted. That should tell you why it is being routed the way it is.
>
> --------------------
> the
> the
> the
> and
> port
> (1300.95), but
> TotalCompensation
> again
>
>
|
|
|
|
|