Forum Replies Created
-
AuthorPosts
-
December 6, 2006 at 3:54 AM in reply to: Call Receive pipeline in orchestration to debatch a flat file #16747
If you are looking for speed, then you could consider debatching the file in the first pipeline.
Define a header schema and a document schema:
Header
–Record maxOccurs = 1 tag=HeaderDocument
–Data maxOccurs = 1 tag=Data
–Trailer maxOccur = 0 tag=TrailerAlso create a property schema and add a record count property. In the document schema promote the record count field from the trailer into this property.
Each record will be debatched into a separate message, with the last record also having the trailer record attached
Write a custom pipeline component that checks your custom property against BTS.InterchangeSequenceNumber. You will need to perform this logic after the entire stream has been read and all fields have been promoted (Check out the CustomPartyResolution pipeline component in the SDK on how to do this)
If your custom property does not equal the BTS.InterchangeSequenceNumber you can throw an exception, this will abort the entire batch if you have Recoverable Interchange Processing turned off. Or you could promote an error message into the message context that could be handled by you orchestration
If I understand correctly you are trying to flatten the invoices.
You should be able to connect the product record to the output record using a looping functoid and then just connect the fields from the header and product records to the appropriate fields in the output record.
Have you set the web site to use ASP.NET 2.0.
From IIS -> right click->Properties and check the ASP.NET tab
December 5, 2006 at 8:21 PM in reply to: Urjent:How does Rosettanet agreement Links to an application Port in biz talk 2006 #16740I haven’t worked with the rosettanet at all, but is your web site running under an application pool that has right to the message box? Any other security on IIS?
I can’t think of anything else to try other than what’s suggested.
Maybe on of the Records is in correctly makes Pre / Post / or Infixed? Might want to double check that. Otherwise, might have something else wrong.
If you want to email me the schema and sample file (email on Contact page) I should have some time to take a look at it.
I time or count based loop is very prone to Zombies. That’s that these messages are. Messages in the Completed with discarded messages state are very easy to, well, terminate. If you end the Orchestration, they just go away.
I think a better approach would be to write all the messages to a SQL table when they arrive. Then, use a Stored Procedure to extract messages out in groups of 500. I think that would be a safer way to go.
Hope this helps.
I’d take the 2nd approach and do the Xml validation inside the Orchestration. Then, send the response message back. Or if you use a request-response port you just need to thrown an exception – I think.
I think your 1st approach would work if you used the Xml Validate Component inside the pipeline.
One other thing to look at is the parsing modes. There is Speed and Complexity. When you have optional nodes you usually need to change the setting to Complexity. It’s set on the <schema> node.
December 5, 2006 at 2:52 PM in reply to: Receivng Winzip attachments through Biztalk 2006 Pop3 adapter. #16735Hi Stephen,
Your example was right on the money. All is well.
Thank you.
Rob
Is this a permissions problem? Does the BizTalk service account have read/write access to that directory? Click "refresh" under the "receive location" to see if it's been disabled.
You need to create an envelope and document schema.
Here is an example with both envelope and document in the same schema file. You should be able to deploy this schema and use the standard XmlReceive pipleine to debatch your file into separate <Color> messages
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:appinfo>
<b:schemaInfo is_envelope="yes" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" />
</xs:appinfo>
</xs:annotation>
<xs:element name="Colors">
<xs:annotation>
<xs:appinfo>
<b:recordInfo body_xpath="/*[local-name()='Colors' and namespace-uri()='']" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="Color" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Color" type="ColorType" />
<xs:complexType name="ColorType">
<xs:sequence>
<xs:element name="FrontColor" type="xs:string" />
<xs:element name="BackColor" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>You may also have problems without any namespaces in your xml. The message type of the envelope will be #Colors and the message type of the document will be #Color. If you have any other schemas deployed wuth the same root nodes and without a namespace things will become difficult.
Hello,
Thanks for your reply. I already had an outer record in the schema so added the trailer record on the end to absorb the extra CRLF but I still get the same “The remaining stream has unrecognizable data. ” error message. What should the child order and child delimiter type be for this trailer record? I suspect that could be the problem.
Below is my schema:
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
Any help would be much appreciated.
Cheers
StableHi Stehen,
Thanks for your reply. The suppress trailing delimiters property is available on the record below the schema level. I tried setting this but still got the same error.Cheers
Well I was trying to solve the general case, which is the idea of functoids. The example I gave was just one mapping I need, there are many such mappings I need to make where I need to map a set of X values to a set of Y values.
December 5, 2006 at 8:31 AM in reply to: SQL ERROR -‘MSDASQL’ was unable to begin a distributed transaction." #16729Hi Richard,
Thanks a lot. RPC did fail. And after some investigation, the Biztalk Server was not on the same domanin as the SQL server.
Will keep you posted about the progress.
Many thanks
-
AuthorPosts