Saturday 28 July 2012

To Promote Property in Pipeline Component

Steps to Promote Property in Pipeline Component:
1. First, Create an element in Property Schema with Property schema base value as “MessageDataPropertyBase”
(We are not associating this element with any Document schema and want to promote the value in Pipeline so that any document schema can use this Promoted Property).
Eg:
Property Schema
2. In Pipeline component, we can promote property in execute method of Icomponent Interface.
//IBaseMessage pInMsg
We want to promote property “UserName” and assign value “xyz” to it
//Second element in method is target Namespace of property Schema


pInMsg.Context.Promote(“UserName”,”Http://Test”,”xyz”)
return pInMsg;  //Returning value from Pipeline 


That’s it. This would promote property UserName in message context.
There is also a similar method called Context.Write  


pInMsg.Context.Write (“UserName”,”Http://Test”,”xyz”)


Difference between Context.Promote and Context.Write is using Context.Promote property is promoted in context of message and it can be used in Orchestration and at port level for routing.
But in Context.Write property is not promoted in message context and it can only be used in orchestration (like Distinguish property)

Property Schema: Property Schema Base

We use  Property Schema to promote a property (field)  so that we can access it in orchestration and use for Message routing.
Elements in property schema has different Property Schema Base value
Property Schema Base
MessageDataPropertyBase:
This is Default Schema base value of Element.
Promoted Property element which has MessageDataPropertyBase as Property Schema base can only be originated from associated Document Schema.
This kind of promoted element is limited to the Document schema.
In Orchestration, Document Schema element is associated with Promoted property Element using Promote – Show promotions (and also Quick Promotion) and than this promoted property can be used in Orchestration or Port Level.

MessageContextPropertyBase
Promoted Property element which has MessageDataPropertyBase as Property Schema base can be originated from associated Document Schema or promoted in Pipeline Components  or promoted using Correlation.
So this Property is not associated to particular Document Schema, any document schema can used this promoted property.

PartContextPropertyBase
It is like MessageContextPropertyBase but  promoted element with PartContextPropertyBase value can be used on a part of Multipart message.
For Example:
we have following Property Schema :
MessageContext element has Property Schema base as  MessageContextPropertyBase
MessageContext element has Property Schema base as PartContextPropertyBase
Property Schema Property Schema
Following is the Multipart Message Part
MultiPart Message
So if we want to add context to the Multipart message, we can use following code
MultiPartmsg(MyBiztalk.MessageContext) //where Multipartmsg is message with MultipartMessage Type

Now, if we want to add context to a part (called Body) of Multipart message,we can use
MultiPartmsg.Body(MyBiztalk.PartContext)


Silverlight: Combo Box showing empty value

In Silverlight 5.0, For some Combo Box selected value is becoming empty (or null) .
Only the Selected Value some how becomes null and Combo box looks like following:

image      image

There are couple of work around on this issue but i could not figure out why in the first place Combox selected value is getting null.
Workarounds:
  • First one, i got from this post, By Using ObservableCollection<T> in view code to populate the itemsource (or Datacontext) for the Combo Box.
    In this approach we would need to write code in code behind of xaml (i.e view code)
  • Second One, In Set accessor of “Selected Value” Property  put a check for null value.
public string SelectedValue
{
     get
     { return _svalue; }
     set
     {
         if (value != null)
         {
             _svalue = value;
             onPropertyChanged("SelectedValue"); //INotifyPropertyChange Event
         }
     }
}
Second Approach is easier but it more of a reactive approach.
HTH
Thanks