Tuesday, May 5, 2009
The solution is explained in the following link, in a few words,Business Rule Engine needs an instance of a class and don’t know how to work with Static classes but by changing a parameter it can be solved.
Thanks to Jean-Francois Philagor for pointing this article.
Monday, March 30, 2009
When using the Stored Procedures in SQL Server and BizTalk, we need to add the XSD to the project. When using the Add Adpater MetaData feature of BizTalk (Add –> Add Generated Items…) BizTalk generates the schema, but the result is equal to the Success element and is of atype AnyType.
This behavior is not the one we want as we want to use the return values.
1. First create the Store Procedure
ex. SELECT Id, Name FROM Countries FOR XML AUTO, XMLDATA
Be sure to add FOR XML AUTO, XMLDATA at the end.
2. Run the Add Adapter MetaData wizard, within Visual Studio and your
3. At the Statement Information screen, you need to enter valid values
into the Value column
4. Click the Generate button
5 Finish the Wizard, you will see that now the XSD will contain the
structured results and not anymore the AnyType element.
6. After the XSD is generate, remove the XMLDATA clause from the
ex. SELECT Id, Name FRO Countries FOR XML AUTO
Wednesday, March 11, 2009
I needed to create a condition in the Business Rule Egine as follows:
If Field PDF is repeated more than 5 times, take the 5th record
So I needed in the conditions to count how many times the PDF field is repeated within the Xml file
I did the vfollowing:
1. Create a new vocabulary
2. Add New Definition
3. Select Xml Document Element or Attribute
4. Enter a Definition name, ex PDFCount
5. Browse for the Xsd file and select the Field
6. Update the XPath Field Value
a. Add count(./ in front
b. Add ) at the end
7. Select System.Double as Type
8. Select Perform “Get” operation
9. Enter a display name
10. Click Finish
11. Use the definition name in the Rule Conditions
Monday, February 9, 2009
The raison to write this article is because I still see many multi-nationals struggling with naming conventions within their IT department.
Naming conventions are as old as IT itself, but still many companies do not have proper naming conventions, and even worse, they use internal of external sources to create one.
What is the reason to have Naming Conventions in the first place?
The main reason to introduce naming conventions is to :
- - to reduce the effort needed to read and understand source code
- - to enhance source code appearance
The most important reason is the first one, to reduce the effort needed to read and understand source code
Code must be easy and quick readable and understandable when new employees (internal of external) enters the IT department or when other teams takes over the project..
The answer I gave to my customers is very easy: take the naming conventions found on the Internet. The goal is not only to have company related Naming conventions, but general naming conventions.
New employees or external consultancy will loose less time understanding the general naming conventions, as they were used too with their previous work, instead of learning the company related ones, which will never be followed 100%.
General Naming Conventions: http://msdn.microsoft.com/en-us/library/ms229002.aspx
And many more are available on the net.
Don’t let your IT department loose time to write company related naming conventions, re-use them!
Friday, September 19, 2008
When you are working on several orchestrations, and need to compile your work, but one of orchestrations is still not working, but you don't care at the moment as you want to compile the other ones. How to do it?
- Right Click on the Orchestration in the Solution Explorer
- Set Build Action to None
- Compile the project and the orchestration will not be taken care of.
I had 2 receive locations (1 Receive Port).
Each receive location did validation of a schema in the XmlReceive Pipeline
When an invalid message arrived, i wanted to send an email to the helpdesk and copy the incoming message in the error directory.
I had enabled routing for failed messags in the Receive Port
I created a send port group, adding filter BTS.ReceivePortName = the ReceiveLocation
+ ErrorReport.ErrorType exists.
When an invalid message arrived at the location, I received error entries in the eventlog, but the email nor the copy was processed.
I changed the filter to ErrorPort.ReceivePortName = receivelocation
It worked great.