Forum Replies Created
-
AuthorPosts
-
I am using quick promotion
How are you promoting these values
What properties are you usingThank you for the help. I’m afraid I didn’t give an importnant info – the database engine is Oracle, not MS SQL. It means that I should make static data access layer in c#, am I right ? The other solution could be an Oracle adapter, but the price…
Are there some examples of making c# modules and call it from an orchestration ? (beside your video – I have rather poor net bandwith here)Thanks
Peter
Thanks!
The file looks to be interessant, I gonna read it…
YF
Thanks a lot, greg.forsythe
The biztalk user does not necessarily need to be an admin on the SQL Server.
There are a number of domain accounts that you need to create that provide secure access to the Biztalk databases. The security on SQL server is setup for you when you install Biztalk.
The user account you are logged on with to install Biztalk must have sa privilege on the SQL server in order to create the database etc.
You need to follow the instructions in the Multi-Server installation guide found here:
[url]http://go.microsoft.com/fwlink/?LinkId=46922[/url]A correlation is basically a dynamic filter. i.e. property values you are filtering on are only known at runtime.
When you initialize the correlation the orchestration creates a subscription on the messagebox using the correlation set properties and their values as a filter.
In order to gather all the responses from the scatter loop you need a single identifier from the original message that ties all the responses back to the orchestration instance.
Create a property called CorrelationId. In the initial receive pipeline use a custom pipeline component to promote the MessageId into your CorrelationId property.
In your orchestration have a Direct receive port, on the activate receive set your filter and add BTS.ReceivePortName = <portname>. You cannot bind a direct port so you will need to have a subscription filter to do this.
Create a correlation set using the CorrelationId property and initialize this correlation set on the activate receive.
Enter your Scatter loop, in a message assignment shape:
outputmessage(YourNamespace.CorrelationID) = inputmessage(YourNamespace.CorrelationID)Send the messages on a direct port to your sub-orchestration.
In the sub-orchestration create correlation set based on the CorrelationId property. You are not using this correlation set for correlation, but purely as a mechanism to promote the CorrelationId on the return message.
In the messageassignment shape where your create the return message:
responsemessage(YourNamespace.CorrelationID) = requestmessage(YourNamespace.CorrelationID)
Send the response to a direct send port and initialize the correlation set on the send – This will promote the CorrelationId property.Back in your original message add an operation to the original direct receive port and link this to the receive shape in your gather loop. On this receive shape set Following Correlation to the correlation set initialized on the activate receive.
Hi, I want to install SQL Server and Biztalk in two different machines.
I know that the Biztalk user MUST been administrator on the SQL Server machine, right?
Is there something else I need to do to connect them together?
Thks!
Hum.. The FTP site isn’t on the same workgroup…. 🙁
Anyway…I gonna try on Tuesday…
See You!
Exactly. Biztalk don’t pick up the files anymore. I’ll try with the UNC… I let you know about it in a few days (four days free until today, yeah!) 😉
[quote:f272f9ddcb]Can you initialize the correlation set on the initial receive.[/quote:f272f9ddcb]
I just tried this, here is the scenario. I created a dummy project to test these concepts. I have a WeatherRequest and WeatherResponse schema (and an orchestrationA that I call with direct binding that receives the request and returns a dummy response).
I have another orchestration that tests the scatter/gather model.
I have only one correlation type and set in the orchestration, and it is on zip-code. When I receive the message with one zip code, I loop three times and increase the zip code by one each time.I changed the initial receive of the WeatherReq to \”Init. Correlation\”.
I then have the scatter loop which has a Send WeatherReq2 (I basically just change the zip code and set an action that signals the orchestrationA – see above – to receive the message. The send shape at the bottom of the scatter loop sets the \”following correlation\”.I then have the gather loop, and also set the \”following correlation\” of the receive shape there.
I’m now getting this compile error:
error X2259: in a sequential convoy receive the ports must be identicalAccording to the sequential convoy doc: \”Sequential correlated receives are receives that are correlated to previous receives.\”.
There are no parallel shapes in my orch. The recap, the first receive receives a Weather Req and the second receive receives a WeatherResponse. The first receive is tied to a flat file port (and has a filter on the action). The second Receive is tied to a direct binding port.
Thanks for any more ideas!
We are using SOAP Headers and do have a receive pipeline that promotes the SOAP Headers. One of the elements in the SOAP header is simply called CorrelationID, and we set it to a GUID.
I’m still really confused what \”Initialize Correlation\” means in Biztalk and why it can only be done once. If I have a scatter/gather, I reset my CorrelationId on each Send, yet there is only one \”initialized correlation set\”.
[quote:8f99fd7efb]Can you initialize the correlation set on the initial receive.[/quote:8f99fd7efb]
I guess that is a round-about possibility that I can investigate further.In one of our orchestrations, we had send a dummy message to initialize correlation, because later we had a loop, and in the loop, only sometimes would we actually need to create and send the exception message (i.e. only when there were exceptions). Someone told me there is an adapter that eats the output (i.e. we are writing to message to a dummy flat file directory, but there is no need to really write there, this was just a get-around to set the correlation.
I did try playing with passing a correlation set to a sub-orchestration.
The parameter direction is limited to \”in\”. So I guess you have a receive with a \”following\” correlation in a sub-orch, but it seems to be impossible to have a send an initialize a correlation.1) Create and Unit Test StoredProc with Insert Logic (I suggest you return some value that indicates success or failure)
2) Run the SQL Adapter to build schema for StoredProc (the parms of the SQL proc will be xml fields)
3) Map incoming file to new schema
4) Create Request/Response Send Port in Biztalk Explorer with type SQL
5) Create Orchestration – with Send/Receive shape to SQL port.You can also write a C# static Data Access Layer and call it from an expression shape in an orchestration.
Full videos of the above available in my tutorials below.
I don’t really have any other ideas. So how do you know it is not working? You have files in the FTP directory, and Biztalk is not picking them up? Is the FTP site within your company or external? If internal, you could do a file receive using an UNC name such as \\\\FTPServer\\C$\\ReceiveDir.
Create variable of type System.Xml.XmlDocument,
and another variable of type String.Then in an expression shape:
varXmlDoc = msgIncoming;
varString = varXmlDoc.OuterXml;This works with normal \”schema\” messages. If you have a web service multipart message the message itself is not an XML Document, but often one of its \”sub-messages\” is.
-
AuthorPosts