BizTalk Server Orchestration - Dynamic Expressions or Programmatic Expression Evaluation?

This is Interesting: Free IT Magazines  
Home > Archive > BizTalk Server Orchestration > October 2004 > Dynamic Expressions or Programmatic Expression Evaluation?





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 Dynamic Expressions or Programmatic Expression Evaluation?
J. Dudgeon

2004-10-17, 2:48 am

I am currently working on a solution for a client and have hit an interesting
challenge. The overall architecture revolves around a publish-subscribe
model, where the clients are able to update their subscriptions dynamically.
So far I have explored a solution where an orchestration invokes another
orchestration for each party that is enlisted to a role link.

I originally explored using filters on static send ports, therefore the
solution would work via content-based routing. Unfortunately, due to
limitations with this implementation, I ended up pursuing role links and
party enlistment.

The problem now is that I would like to allow the party to associate
"expressions" that evaluate against distinguished fields on the incoming
messages. It appears that you can't dynamically/programmatically change the
"Expression" property of an Expression or Decide shape.

Therefore, to my questions:

1. Is there a way to call BizTalk's expression evaluator at runtime from a
..NET assembly? If this possible, I could pass a XLANGMessage reference to my
..NET assembly, load my subscription (an expression), and have the expression
evaluated against the message. This would allow me to retain BizTalk's
expression evaluation on promoted properties etc, without having to resort to
custom code. Is this possible?

2. Is it possible to set the Filter property on a dynamic send port? How
about when the send port is associated with a role link? I'm assuming this
isn't possible as I think role links require static ports, which are bound to
each party enlisted into the role. Is this correct?

3. Is it possible to dynamically set the Expression property of an
Expression or Decide shape from within an orchestration? Something similar
to Expression_1.Expression = "some expression == wishlist.wouldbenice".

Any insight would be greatly appreciated.

Thank you in advance.
J. Dudgeon

2004-10-25, 8:46 pm

Anyone?

"J. Dudgeon" wrote:

> I am currently working on a solution for a client and have hit an interesting
> challenge. The overall architecture revolves around a publish-subscribe
> model, where the clients are able to update their subscriptions dynamically.
> So far I have explored a solution where an orchestration invokes another
> orchestration for each party that is enlisted to a role link.
>
> I originally explored using filters on static send ports, therefore the
> solution would work via content-based routing. Unfortunately, due to
> limitations with this implementation, I ended up pursuing role links and
> party enlistment.
>
> The problem now is that I would like to allow the party to associate
> "expressions" that evaluate against distinguished fields on the incoming
> messages. It appears that you can't dynamically/programmatically change the
> "Expression" property of an Expression or Decide shape.
>
> Therefore, to my questions:
>
> 1. Is there a way to call BizTalk's expression evaluator at runtime from a
> .NET assembly? If this possible, I could pass a XLANGMessage reference to my
> .NET assembly, load my subscription (an expression), and have the expression
> evaluated against the message. This would allow me to retain BizTalk's
> expression evaluation on promoted properties etc, without having to resort to
> custom code. Is this possible?
>
> 2. Is it possible to set the Filter property on a dynamic send port? How
> about when the send port is associated with a role link? I'm assuming this
> isn't possible as I think role links require static ports, which are bound to
> each party enlisted into the role. Is this correct?
>
> 3. Is it possible to dynamically set the Expression property of an
> Expression or Decide shape from within an orchestration? Something similar
> to Expression_1.Expression = "some expression == wishlist.wouldbenice".
>
> Any insight would be greatly appreciated.
>
> Thank you in advance.

Matt Milner

2004-10-26, 5:48 pm

Changing the expression in an expression shape at runtime is like changing
C# code at runtime, not fun to code, and not something that is currently
possible.

What were the limitations with the send ports and filters? Volume? This
offers the easiest way to do the publish subscribe.

You could call out to your own .net assembly, but you'll be doing the
expression evaluation on your own.


Matt
"J. Dudgeon" <J. Dudgeon@discussions.microsoft.com> wrote in message
news:16F4869D-C7B4-4D76-9905-61817D896180@microsoft.com...
>I am currently working on a solution for a client and have hit an
>interesting
> challenge. The overall architecture revolves around a publish-subscribe
> model, where the clients are able to update their subscriptions
> dynamically.
> So far I have explored a solution where an orchestration invokes another
> orchestration for each party that is enlisted to a role link.
>
> I originally explored using filters on static send ports, therefore the
> solution would work via content-based routing. Unfortunately, due to
> limitations with this implementation, I ended up pursuing role links and
> party enlistment.
>
> The problem now is that I would like to allow the party to associate
> "expressions" that evaluate against distinguished fields on the incoming
> messages. It appears that you can't dynamically/programmatically change
> the
> "Expression" property of an Expression or Decide shape.
>
> Therefore, to my questions:
>
> 1. Is there a way to call BizTalk's expression evaluator at runtime from
> a
> .NET assembly? If this possible, I could pass a XLANGMessage reference to
> my
> .NET assembly, load my subscription (an expression), and have the
> expression
> evaluated against the message. This would allow me to retain BizTalk's
> expression evaluation on promoted properties etc, without having to resort
> to
> custom code. Is this possible?
>
> 2. Is it possible to set the Filter property on a dynamic send port? How
> about when the send port is associated with a role link? I'm assuming
> this
> isn't possible as I think role links require static ports, which are bound
> to
> each party enlisted into the role. Is this correct?
>
> 3. Is it possible to dynamically set the Expression property of an
> Expression or Decide shape from within an orchestration? Something
> similar
> to Expression_1.Expression = "some expression == wishlist.wouldbenice".
>
> Any insight would be greatly appreciated.
>
> Thank you in advance.



J. Dudgeon

2004-10-26, 5:48 pm

Perhaps I'm looking for an eloquent solution when in reality a more
simplistic solution would suit our requirements. I may possibly be
overlooking something BizTalk already provides.

I guess I could create a way for clients to be able to update their static
send ports (add/remove/change the filter etc) and just let BizTalk's built-in
pub/sub evaluate the filters etc. I guess I am just concerned about the
overhead. We may end up with hundreds or even thousands of subscribers.
BizTalk would have to evaluate all those statically subscribed ports.

I guess I'll have to do some more research and testing.

"Matt Milner" wrote:

> Changing the expression in an expression shape at runtime is like changing
> C# code at runtime, not fun to code, and not something that is currently
> possible.
>
> What were the limitations with the send ports and filters? Volume? This
> offers the easiest way to do the publish subscribe.
>
> You could call out to your own .net assembly, but you'll be doing the
> expression evaluation on your own.
>
>
> Matt
> "J. Dudgeon" <J. Dudgeon@discussions.microsoft.com> wrote in message
> news:16F4869D-C7B4-4D76-9905-61817D896180@microsoft.com...
>
>
>

Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com