BizTalk Server - BTS2006 not filtering on decimal

This is Interesting: Free IT Magazines  
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
Søren

2006-04-27, 7:25 am

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.
Søren

2006-04-27, 7:25 am

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]

Søren

2006-04-27, 7:25 am

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

Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com