Forum Replies Created
-
AuthorPosts
-
Greg,
Thanks for your help. This will be detailed (though hopefuly not long winded.)
I think I have been trying this method. I’ll try to outline all the little details I had to sweat along the way with little results.
1) the data – in summary
<?xml version=\”1.0\” encoding=\”UTF-8\”?>
<ns0:UtilityData xmlns:ns0=\”http://pr_test_2_schemas.sch_test_2_env\”>
<Utility>
<Utility_Name> Datamatic Test </Utility_Name>
<Utility_ID> ID_TEST </Utility_ID>
</Utility>
<Software>
<MVP_Version> 3.7 </MVP_Version>
<ROADRUNNER_Version> 032401 </ROADRUNNER_Version>
<AMR_Version> 020901 </AMR_Version>
</Software>
<Data>
<Record xmlns:ns1=\”http://pr_test_2_schemas.sch_test_2_body\”>
<CustomerData>
<Name> Customer 1 </Name>
…
</CustomerData>
…
</Record>
.
.
.
<Record xmlns:ns1=\”http://pr_test_2_schemas.sch_test_2_body\”>
<CustomerData>
<Name> Customer 23 </Name>
…
</CustomerData>
…
</Record>
.
.
.</Data>
</ns0:UtilityData>Tag Summary:
– UtilityData: root node
– Utility, Software – header info (applicable to all records)
– Data – individual records2) My Envelope Schema looks something like
– UtilityData
– Utility
Utility_Name
Utility_ID
– Software
MVP_Version
…
– Data
ns0:Record (imported….)
(though I have tried with <any>3) My Body schema looks like:
– Record
– Customer Data
…. field elements
– RouteData
….. field elements
– MeterData
… field elements
– ReadingData
… field elements
– FIREFLY
… field elementsNOTE: I have put in names spaces in the data XML file:
NOTE: I put the schemas in a separate project; I had read to do that somewhere.IN the ORCHESTRATION
4) The receive pipeline’s request operation has the \”Message Type\” property set to:
pr_test_2_schemas.sch_test_2_body (is this correct? pointing to the body schema.)
– the receive pipeline configured for custome
pipeline: pr_test_2.pl_test_2a
transport: file
URI: C:\\bts_sl_test_2\\IN\\*.xml5) the Receive Message object/element has the \”Message\” property set to: msg_2_body
5a) msg_2_body: property \”Message Type\” = pr_test_2_schemas.sch_test_2_body
5b) Send message object/element configured the same
6) Send Port:
pipeline: Microsoft.BizTalk.DefaultPipelines.XMLTransmit
transport: file
URI: C:\\bts_sl_test_2\\OUT\\%MessageID%.xml7) custom pipeline: pr_test_2.pl_test_2a
– in Disassemble stage: XMLDisassembler
– allow unrecognized message: false
– Document Schemas: pr_test_2_schemas.sch_test_2_body, pr_test_2_schemas, Version=1.0.0.0, Culture=Neutral, PublicKey Token = …..
– Envelope Schemas: pr_test_2_schemas.sch_test_2_env, pr_test_2_schemas, Version=1.0.0.0, Culture=Neutral, PublicKey Token = …..8) Current Error Message from Event Viewer:
Event Type: Error
Event Source: BizTalk Server 2006
Event Category: BizTalk Server 2006
Event ID: 5753
Date: 5/31/2006
Time: 9:53:17 AM
User: N/A
Computer: FFICBMDEVNEW
Description:
A message received by adapter \”FILE\” on receive location \”pr_test_2_1.0.0.0_pr_test_2.orch_test_2_port_rec_test_2_9ee3ac47ef27d2e6_ReceiveLocation\” with URI \”C:\\bts_sl_test_2\\IN\\*.xml\” is suspended.
Error details: There was a failure executing the receive pipeline: \”pr_test_2.pl_test_2a, pr_test_2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9ee3ac47ef27d2e6\” Source: \”XML disassembler\” Receive Port: \”pr_test_2_1.0.0.0_pr_test_2.orch_test_2_port_rec_test_2_9ee3ac47ef27d2e6\” URI: \”C:\\bts_sl_test_2\\IN\\*.xml\” Reason: No Disassemble stage components can recognize the data.
MessageId: {33813B7C-8A7E-4553-B7DF-EF5A1BEFD9DA}
InstanceID: {140AE0EE-F35A-46C9-A167-6D165007A196}For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
(I have check for UTF-8 BOM usage with my editor and this is toggled ON.)
Thanks again,
PhilThe best way to get this to work is to install the SDK http sample. When you install that examle the example adds a com+ applictation to the IIS and it’s needed to make the HTTP adapter to work. After installing the example you can unistall it because the com+ application is still there.
If you look at this installion guide and do exactly as that it will work:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdk/htm/ebiz_sdk_samples_yzhk.aspDon’t forget to add a new httpadapter in the iis to afflict your envierment.
I think an Orchestration is the only way to do this. A pipeline would create 100 instances and you can’t really group inside them.
Depending on the size, you could end up running out of memory inside BizTalk.
Maybe a custom adapter could work.
This doesn’t really sound like something that BizTalk would really excel at. I think you could use a .net component to do this with minimal effort. That would be called through an Orchestration if needed.
Just my thoughts.
I am trying to call a variable within the mapper. Particularly, I have a database lookup functoid and want to set the lookup value to a variable that will get set prior to the message transformation. Any ideas?
There may be another way of doing this and I’m open to options. Basically, I am passing a user’s email to the database lookup functoid, so I can lookup the user’s title, name, etc and pass it into the map. The problem is the email can be dynamically changed by a business rule.
Thanks.
Hi!
I’m devlopping a simple edi to xml conversion application following the microsoft tutorial for edi…
I get this error from the edi subsystem:\”Error encountered: ERROR (41), interchangenr 10021 :
The sender of the document is not recognized. Contact the system administrator. (msgnr:0 segnr:0)(line:1 pos:71 filepos:363)sender: [][] [7310870110000][14][]
sender: [][] [7310870110000][14][]\”why is the sender not recognized? My UNB segment is:
\”UNB+UNOA:2+7310870110000:14+7381000054303:14+060504:1341+M6J\”
In the send EDI uri I’ve typed: EDI://7310870110000:14:7310870110000
?
any idea from some edi expert?!When you send a message to a direct report you may need to promote a property into the message context for the subscribing orchestration to filter on.
e.g.
Having a preprocessing orchestration that subscribes to messages of type Invoice and publishing the same message where you want a second orchestration to process it. If the second orchestration just subscribes to messages of type Invoice it will receive all Invoice messages both from the receive port and the first orchestration. You need to create a property (PreprocessingComplete) and have the second orchestration subscribe to Invoices which have a property of PreprocessingComplete.
When you set this property in an orchestration it is written but not promoted to the message context and cannot be used in the filter of the second orchestration.
The trick is to create a correlation set containing the PreprocessingComplete property and \”Initializing\” this correlation set on the send to the direct port. This forces the promotion of this property and enables it to be used in a filter.May 31, 2006 at 10:08 AM in reply to: Can 2 different Updategrams use the same SQL Solicit-Respose #14775Yes you can use the same SQL Port to send different updategrams.
All the updategram schemas must have the same namespace and the same return root node name.
I have found it easiest to have a single schema for all updategrams going to a the same SQL Port. This requires a bit of manual intervention, using the often maligned development tool Notepad.[code:1:bd9c7ae2df]<Schema targetnamespace=\"urn:domain.com:SQLPurchaseOrderService:v1>
insertpurchaseorder
<updg:sync>…
updatepurchaseorder
<updg:sync>…
result
Success[/code:1:bd9c7ae2df]The target namespace is an arbitary string. The default in Biztalk is to use a Url (http://….) but my preference is for a urn (see above). You will need to visit [url]http://www.w3.org[/url] for the rules on Xml namespaces
Thanks Greg,
I don’t know much about correlation. So can you give some more detail on the correlation trick that you have been mentioned in your reply
Use Direct ports.
In the orchestration the port can be Specify Now, Specify Later or Direct (or Dynamic for Send ports).A direct send port will publish the message straight to the messagebox and a direct receive port will subscribe to a message from the messagebox.
You need to take care of the subscription details yourself, using a filter on the receive shape in the orchestration and setting the correct properties before publishing the message. There is a trick to promoting properties with an orchestration using a correlation set that you may need to use and some times you can create an infinite loop with a slight mistake.
If you use a direct send port there must be a matching subscription enlisted or a routing error will occur i.e. you cannot use the messagebox as a handy storage area
What properties are involved in the correlation.
Can you initialize the correlation set on the initial receive. Using a custom pipeline to promoted the correlated properties if they are not promoted directly from the message.
Ensure these properties are in the message context of the message sent to the sub-orchestration. The sub-orchestration will have a correlation set of the same type as the main orchestration and will copy these properties into the response message and intialize its correlation set on send.The receive in the \”gather\” loop will follow the correlation set intialised by the main receive.
One potential issue is when is the gather loop going to set its subscription for the return messages. If it is after completion of the scatter loop. What happens if the sub-orchestration completes before the scatter loop has completed. Are you going to get routing failures.
You could try putting the scatter and gather loops in a parallel shape?To use an envelope and debatch the message in the pipeline you need 2 message types(this can be in one or two schemas). The easiest is probably two schemas.
You can define you envelope in one schema:
<Schema targetnamespace=\”http://pr_test_2.sch_test_2_env\”>
UtilityData
AnySet the Envelope=Yes and the BodyXpath to the UtilityData node.
You define your document in another schema:
<Schema targetnamespace=\”\”>
Utility
Utility_Name
Utility_ID
etcThe standard XMLReceive pipeline will recognise the envelope schema and then try to create separate messages for each child node of UtilityData. It needs a to match this child message to a schema, hence the second document schema.
The biggest issue here is no namespace on the document schema, although this will work you will face issues moving forward, such as schema versioning etc.
Do you have any influence on the format of the incoming message. If so I would suggest using a namespace
e.g.
<ns0:UtilityData xmlns:ns0=\”http://pr_test_2.sch_test_2_env\”>
<ns1:Utilityxmlns:ns1=\”http://pr_test_2.sch_test_2_doc\”>
<Utility_Name> Datamatic Test </Utility_Name>
<Utility_ID> ID_TEST </Utility_ID>
etcYes you need the Oracle client software on the Biztalk server that hosts the Oracle adapter.
The alternative would be for the Adapter to replicate all the Oracle database connection/transport software which it does not do. Or having a Biztalk adapter proxy on the Oracle database server and this does not happen.Not sure what you mean by connecting to the Unix File System directly. The connection options are limited by what the Unix server can support.
You can use SAMBA on the Unix server and a FILE adapter on Biztalk. NFS is another possibility but I have never tried it.Thank you for the reply. I appreciate some of these are basic questions, so I appreciate that you’ve taken the time to answer them.
I’m starting to get a clearer picture now of how it works. So, am I correct in understanding that to connect to Oracle you must have the Orcale software installed on the BizTalk server? Or will BizTalk connect ‘out of the box’ to Oracle without the need to install anything else apart from the Oracle adaptor?
With regard to Unix, is BizTalk able to connect to the Unix file system directly? Or does it rely on things like FTP, HTTP (as mentioned) to pick up the files/messages that it needs?
Thanks
JeremyNope, as far as I know BizTalk doesn’t support SFTP. You will need to build or use a custom adapter.
I think the only adapter available is through N Software.
You don’t need a reference to the fact retriever inside the Orchestration.
Your Fact Retriever looks right to me.
I have not worked with Data Connections inside the rules engine at all so I can’t help much. Have you looked at the Rule White Paper for BizTalk 2004 on the Microsoft site? I’d try looking at that and check the samples in the SDK – if you haven’t already.
Best of luck.
-
AuthorPosts