Forum Replies Created
-
AuthorPosts
-
Did you start the Biztalk NT (base) Service? If there are any Orchestrations, did you Bind, Enlist and Start them? Did you do the same with the port? Start it and watch the event log for errors.
Thanks for replying……
I'm not sure if the xsd will work as a schema for the dataset….my (mis?)understanding, is that xsd's can be used as schema's for xml files, and used to generate datasets, but an application expecting xml based on an xsd wont know what's hit it if a dataset turns up….
Things have moved on though….I have abandoned using an orchestration to process these messages….basically I got to the conclusion you have given me…..what I'm really after is using the rules engine to process messages, and it's much easier to wire some c# code up to a policy than do it via an orchestration…..
documentation seems a bit thin on the ground for designing rules……
any advice in this line?
September 28, 2006 at 1:21 PM in reply to: The published message could not be routed because no subscribers were found #15889Problem went away when i changed the pipeline to xml form passthrough. I guess it wasnt promoting some properties with the pass through pipeline.
This might help
September 28, 2006 at 11:55 AM in reply to: The published message could not be routed because no subscribers were found #15887Do you have a send port or orchestration that subscribes to this message. For example, a send port that has a filter that looks like bts.receiveportname == rcvPortName
According to http://msdn.microsoft.com/library/default.asp?url=/library/en-us/BTS06CoreDocs/html/3c210451-52f7-4974-83ad-64a0e56d4b6a.asp :
You can also configure the File receive adapter to rename files when processing them. You should rename files to ensure that the receive adapter does not generate duplicate messages if the receive location is shut down and restarted. This is a configurable option for File receive locations. By default, renaming is disabled. When renaming is enabled, the File receive adapter appends the extension .BTS-WIP to the file. The receive adapter then reads the messages from the renamed file in the receive location and submits it to the server. After the receive adapter has successfully submitted a file, the receive adapter deletes the renamed file from the file system or network share. If a message has been read but failed processing in the pipeline, the receive adapter places the message in the MessageBox database suspended queue, and deletes the renamed file from the network share.
Tim Rayburn
http://www.TimRayburn.netGreetings,
Your problem is a complex one, so I'll address the individual problems you've raised one by one.
First, you ask how to make BizTalk understand your dataset. You have an XSD used to strongly type the dataset, this is good. What you need to do is add that XSD to your BizTalk project. This will get compiled as a Schema and can act as the definition of the message structure of BizTalk.
Next you ask how to split the individual records, process each, and gather them back at the end. This is a very normal programmers view of the world, but isn't a particularly easy thing to do in BizTalk. It can be done, but it is not a novice task at all. The process of splitting your message into individual records for processing will require you to create and envelope schema. There are some great resources at http://weblogs.asp.net/jan/archive/2004/03/07/85259.aspx which tell you how to do such a thing. Once you've done that, to gather them all back together becomes the trick. Assuming that order is important you'll want to implement a sequential convoy to do this. This can be learned about here : http://www.biztalkgurus.com/Samples/Sequential-Convoy-Orchestration.html
Now, let me give you some advice, it is generally the best practice to try and build your architecture so that each message processing through BizTalk can stand on its own. That it does not have to be matched with other messages before sending and the like. Spend some time to consider if your architecture can be modified to allow for that. Sometimes it can't (EDI Batching is an example), but most times it can. I can't tell you which position you are in because I don't know your problem.
Tim Rayburn
http://www.TimRayburn.NetHi,
Thanks for your reply. I updated the Agestatus fact. Even though I am still not able to fire Rule1.
Please find the output while testing it in rules engine. Could you please let me know what's the problem is
ULE ENGINE TRACE for RULESET: Age 9/28/2006 10:41:45 AM
FACT ACTIVITY 9/28/2006 10:41:45 AM
Rule Engine Instance Identifier: 2ac8c9b1-b1a1-443c-9481-0d864d2c1ace
Ruleset Name: Age
Operation: Assert
Object Type: TypedXmlDocument:Schema1
Object Instance Identifier: 3959276FACT ACTIVITY 9/28/2006 10:41:45 AM
Rule Engine Instance Identifier: 2ac8c9b1-b1a1-443c-9481-0d864d2c1ace
Ruleset Name: Age
Operation: Assert
Object Type: TypedXmlDocument:Schema1:/*[local-name()='Employees' and namespace-uri()='http://empBusinessRules.Schema1'%5D/*%5Blocal-name()='Employee' and namespace-uri()='']
Object Instance Identifier: 35633491CONDITION EVALUATION TEST (MATCH) 9/28/2006 10:41:45 AM
Rule Engine Instance Identifier: 2ac8c9b1-b1a1-443c-9481-0d864d2c1ace
Ruleset Name: Age
Test Expression: TypedXmlDocument:Schema1:/*[local-name()='Employees' and namespace-uri()='http://empBusinessRules.Schema1'%5D/*%5Blocal-name()='Employee' and namespace-uri()=''].AgeStatus == SeniorCitizens
Left Operand Value:
Right Operand Value: SeniorCitizens
Test Result: FalseCONDITION EVALUATION TEST (MATCH) 9/28/2006 10:41:45 AM
Rule Engine Instance Identifier: 2ac8c9b1-b1a1-443c-9481-0d864d2c1ace
Ruleset Name: Age
Test Expression: True == Range(90, 50, TypedXmlDocument:Schema1:/*[local-name()='Employees' and namespace-uri()='http://empBusinessRules.Schema1'%5D/*%5Blocal-name()='Employee' and namespace-uri()=''].Age)
Left Operand Value: True
Right Operand Value: True
Test Result: TrueAGENDA UPDATE 9/28/2006 10:41:45 AM
Rule Engine Instance Identifier: 2ac8c9b1-b1a1-443c-9481-0d864d2c1ace
Ruleset Name: Age
Operation: Add
Rule Name: AgeRange
Conflict Resolution Criteria: 500RULE FIRED 9/28/2006 10:41:45 AM
Rule Engine Instance Identifier: 2ac8c9b1-b1a1-443c-9481-0d864d2c1ace
Ruleset Name: Age
Rule Name: AgeRange
Conflict Resolution Criteria: 500FACT ACTIVITY 9/28/2006 10:41:45 AM
Rule Engine Instance Identifier: 2ac8c9b1-b1a1-443c-9481-0d864d2c1ace
Ruleset Name: Age
Operation: Update – Fact Unrecognized
Object Type: System.String
Object Instance Identifier: -2076391006FACT ACTIVITY 9/28/2006 10:41:45 AM
Rule Engine Instance Identifier: 2ac8c9b1-b1a1-443c-9481-0d864d2c1ace
Ruleset Name: Age
Operation: Retract
Object Type: TypedXmlDocument:Schema1
Object Instance Identifier: 3959276FACT ACTIVITY 9/28/2006 10:41:45 AM
Rule Engine Instance Identifier: 2ac8c9b1-b1a1-443c-9481-0d864d2c1ace
Ruleset Name: Age
Operation: Retract
Object Type: TypedXmlDocument:Schema1:/*[local-name()='Employees' and namespace-uri()='http://empBusinessRules.Schema1'%5D/*%5Blocal-name()='Employee' and namespace-uri()='']
Object Instance Identifier: 35633491——————————————————————————–
September 28, 2006 at 7:54 AM in reply to: Executing business rules in different machines….Plz help!!! #15882You passing in a "dataconnection" or "datatable" to the rule policy? I have to dig through some of my database-based rules to compare, but worst case, you mod the exported XML by hand, and package that up for the MSI.
See if the recent post by one of our BRE tech writers helps … http://blogs.msdn.com/biztalkbre/archive/2006/09/15/756626.aspx. I'm wondering if you're "updating" the wrong fact. Can you try just updating "agestatus"?Be careful though. You're incrementing a value. You can't just do that on the XML doc. I always use a stateful component with a member variable holding the "score", and methods to increment the value. See the "risk scoring" example on MSDN … http://msdn.microsoft.com/library/default.asp?url=/library/en-us/BTS_2004WP/html/87e1b104-c39c-4b0d-a74e-494d672e9779.asp.
As was noted you could wrap the call in an orchestration and simply start that orchestration which would give you a 'fire and forget' asynchronous call. On the other hand, if you want to perform the call, do some other work and then later act upon the data then a better solution would be to use the Parallel orchestration shape to perform this work.
Tim Rayburn
Thanks. Much appreciated.
Thanx dave, the second one workes for me.
i don't need that variables.
To be able to see a completed message body in HAT you will have to check the Track Message Bodies option under tracking of the Receive Port.
-
AuthorPosts