BizTalk Server 2006 or WF? Choosing the Right Workflow Tool for Your Project

I have seen the questions about the differences between BizTalk and WF. I think that you should have a good knowledge in both of technologies in order to make an accurate comparison, thus I had searched within the internet to find an official comparison, I had found it at http://msdn.microsoft.com/en-us/library/cc303238.aspx .

Presenting @ DotNetWork.org: Introduction to EAI , B2B and BPM



Date
Saturday, August 30th 2008,12:00 - 16:00
Location
Canadian International College, @ "El-Tagamo3 El-5ames"

The Biztalk Adapter Pack Poster

The BizTalk Server Team Blog announce the availability of the new BizTalk Adapter Pack Poster.
This poster covers interoperability with Line-of-Business Applications using the BizTalk Adapter Pack and the Windows Communication Foundation (WCF) LOB Adapter SDK.
This poster depicts the functionality, components, architecture, and usage/hosting scenarios of BizTalk Adapter Pack 2.0 and of the WCF LOB Adapter SDK. When printed in full scale, this poster size is 38”x 26”.


Download it from HERE

Write your first Singleton orchestration

As you know In BizTalk Orchestrations, a new instance of an Orchestration is created every time a message arrives at the Receive Port. So what will be the number of orchestrations if we developed an orchestration responsible to login the user ? WOW. for each user want to login, there will be an instance of orchestration .

So How can I solve this?

Do you know that there is a singleton pattern which is a design pattern that is used to restrict instantiation of a class to one object?

Depending in this term we will build a singleton orchestration which will always be only one instance of the Orchestration

HOW !!!!!!!!





Could you please explain more?

The first message that arrives at the Receive port creates a new instance of the Orchestration (initialize the correlation). All other messages would use the same Orchestration for processing (following the correlation), all the messages which arrive at the orchestration must have common property. In our example it will the receive port name

The recipe is very simple, do the following and you will get a singleton orchestration :




1)Create a correlation type with the property BTS.ReceivePortName.

2)Create a correlation set with the correlation type created in the previous step

3)In the first Receive Shape (Activate = true), set the property "Initializing Correlation Sets" as the correlation set ,and in the Second receive , set the property "Following Correlation Sets" as the correlation type .

4)Do you remember while(true) loop , we will create a similar loop similar to this loop in our orchestration

5)The listen and delay shapes is just for Massage , in order not to let the orchestration being within the memory all the time .

You can download the whole project from here

BizTalk Advanced Orchestration Concepts and Best Practices Slides and Demos

http://www.biztalkgurus.com/media/p/15575.aspx

Oracle Adapter : There is an error in XML document (1, 40)

I had developed an application which requests for data from an Oracle Database according to the search criteria , everything works fine as I check the Orchestration debugger the search result return from the database successfully , but the error occurred in the web service that generated by the BizTalk.

Detailed Error:
A response message sent to adapter "SOAP" on receive port "WebPort_OracleAdapter_Proxy/OracleAdapter_OracleOrchesteration_rcvRequest" with URI "/OracleAdapter_Proxy/OracleAdapter_OracleOrchesteration_rcvRequest.asmx" is suspended. Error details: There is an error in XML document (1, 40). MessageId: {F231205A-68A4-45D7-9D3A-33CAF2D5889F} InstanceID: {B77F31E2-D2D8-4D12-9768-A5B97938E20B} For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp Operating System: windows 2003 Microsoft BizTalk Server 2006
Oracle Client version : 10.2.0

In order to fix this kind of error , check the following :


This problem is coming up because the URI that is generated by the adapter is rejected by the SOAP adapter. like if the URI for the targetNamespace is something below, it is not valid URI for SOAP adapter:"http://schemas.microsoft.com/[OracleDb:/MSADAPTER/SCOTT/Tables/MYTEST][OracleDb://MSADAPTER/SCOTT/Tables/MYTEST]" In this case the work around is change the URI within the Orchestration so that it is a valid URI for the webservice. Special characters "[" must be replaced with '%' followed by their ISO hex representation. In addition, I am not sure about the "://" string appearing two times in the same string. Here is a valid URI format as per the XML rfchttp://www.rfc-editor.org/rfc/rfc3986.txt. Or else if we do not want to change the schema to be sent to the Oracle adapter there is another workaround where in we need to use Transform in the orchestration.

1. For this create a new schema similar to the one generated by Oracle and change it to a different target name space without any special characters, something like this "http://schemas.microsoft.com/OracleDb/MSADAPTER/SCOTT/Tables/MYTEST"

2. Then create a map whose source schema points to the one given by Oracle and destination schema corresponds to the one you created in step 1. Moreover, correspond the elements of source to destination.

3. Add a Transform (making use of the above Map) in the orchestration before sending it to the SOAP.


SQL Server Reporting Services - Custom subtotals in a matrix

Last day I had faced a strange issue related to the subtotal of matrix as following:




By the way, I am using the subtotal of the column group and I am using a static row for calculating the male and the female for each row group, the weird thing that the subtotal did not pay attention to the static row. As you know, you cannot change much on the behavior of your subtotals in your matrix. When you create a subtotal it calculates a subtotal and that’s about it....!!!!!!

So the only way to force the subtotal column to calculate the value of our static total is using the custom expression.

so in the data field do the following : in our example :

1) Right click the static total cell
2) Click the expression
3) Put the following expression:

=Iif(InScope("matrix1_ColumnGroup1"),
Iif(InScope("matrix1_RowGroup1"),
"In Cell",
"In Subtotal of RowGroup1"),
Iif(InScope("matrix1_RowGroup1"),
"In Subtotal of ColumnGroup1",
"In Subtotal of entire matrix"))


Replace "In Cell", "In Subtotal of RowGroup1", "In Subtotal of ColumnGroup1" and/or "In Subtotal of entire matrix" with the expressions or fields that you want.or let it as it and see the result and then you can decide what you can do ..!!!!!

in our example :

=Iif(InScope("matrix1_ColumnGroup1"),
Iif(InScope("matrix1_RowGroup1"),
Fields!male.Value + Fields!Female.Value, sum(Fields!male.Value)+sum(Fields!female.Value)),
Iif(InScope("matrix1_RowGroup1"),
sum(Fields!male.Value)+sum(Fields!female.Value),
"In Subtotal of entire matrix"))


finally Thank you Jorg Klein .who gives me the solution of Custom expressions for subtotals in a matrix