Forum Replies Created
-
AuthorPosts
-
October 4, 2006 at 6:41 AM in reply to: Looping xml messages in maps and adding a particular field for each message (need help) #15941
Thanks Bryan. i will check this sample and try to fix my problem.
-Mani
October 4, 2006 at 6:40 AM in reply to: Looping xml messages in maps and adding a particular field for each message (need help) #15940Thanks Greg. i will let you know when i progress with this stuff today.
-Mani
October 3, 2006 at 9:45 PM in reply to: Looping xml messages in maps and adding a particular field for each message (need help) #15939You will need one cumulative functoid for each GL code, and I would imagine this could get messy.
Another way would be to use a custom Xslt and use Muenchian grouping (uses xsl:key) to group and sum the amounts
e.g.
<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" version="1.0">
<xsl:output indent="yes" omit-xml-declaration="yes" version="1.0" method="xml" />
<xsl:key name="glkey" match="/Root/GL" use="no"/>
<xsl:template match="/">
<xsl:apply-templates select="/Root" />
</xsl:template>
<xsl:template match="/Root">
<Root>
<xsl:for-each select="GL">
<xsl:variable name="group" select="key('glkey', no)"/>
<xsl:if test="generate-id($group[1]) = generate-id()">
<GL>
<no><xsl:value-of select="no" /></no>
<amount><xsl:value-of select="sum($group/amount)"/></amount>
</GL>
</xsl:if>
</xsl:for-each>
</Root>
</xsl:template>
</xsl:stylesheet>will convert this:
<Root>
<GL>
<no>1</no>
<amount>-200</amount>
</GL>
<GL>
<no>1</no>
<amount>-300</amount>
</GL>
<GL>
<no>2</no>
<amount>500</amount>
</GL>
</Root>to this:
<Root>
<GL>
<no>1</no>
<amount>-500</amount>
</GL>
<GL>
<no>2</no>
<amount>500</amount>
</GL>
</Root>October 3, 2006 at 8:25 PM in reply to: MQSeries adapter mysterously stops receiving messages. Help! #15938Very odd behavior. Does it happen the same time every day? Is it predictable? Is the Websphere MQ adapter being disabled? Maybe its a connection issue. I am assuming from the email that there is nothing in the event log when this happens?
October 3, 2006 at 8:12 PM in reply to: Looping xml messages in maps and adding a particular field for each message (need help) #15937Mani,
Look at using the cumulative functoids to
consolidate the data. I know this is a 2004 link but the functoids
haven't changed too much. Below is a sample.http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdk/htm/ebiz_prog_map_agwu.asp
October 3, 2006 at 8:11 PM in reply to: Looping xml messages in maps and adding a particular field for each message (need help) #15936Mani,
Look at using the cumulative functoids to consolidate the data. I know this is a 2004 link but the functoids haven't changed too much. Below is a sample.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdk/htm/ebiz_prog_map_agwu.asp
I prefer stored procedures over updategrams. With a stored procedure you can do more complex operations without round trips between biztalk and the database. example:
IF EXISTS (Select * from employee where employeeid = @employeeID)
BEGIN
'Update record
END
ELSE
BEGIN
'Insert record
END
What are others thoughts on this?
I would check to make sure you do not have any suspended messages. If so terminate them and try again.
October 3, 2006 at 11:49 AM in reply to: Error encountered as BizTalk attempts to retrive a message f #15929I have a similar situation, in my case if BizTalk tries to send a message to PRPS_REQUEST.CATALOG.QR, it works. If it tries to send a message to PRPS_REQUEST.CIDS.QR it fails with Reason Code = 2354.
Both use the same transmission queue to pass the request to the remote system. The different remote queues are to set different remote queues in the xmit header.
I could understand if it was happening to both, but it only happens to the second remote queue.
October 3, 2006 at 4:09 AM in reply to: Need to process messages of type B only after all of Type A processed #15927Could I create two orchestration and then run them one by one. I mean:
1) start Orchestration A
2) Stop orchestration A
3) Start Orchestration B
4) stop Orchestration B
5)Start Orchestration A………..step(1) and so on.
Please let me know if this is possible
October 3, 2006 at 12:39 AM in reply to: Need to process messages of type B only after all of Type A processed #15925Thanks Tim,
I would like to describe the required process in detail:
1) Two types of Messages, namely,Message A and Message B, arrive in Folder X.
2) Both messages A and B that come in x minutes get processed . However, first all the Message A get processed and then Message B.
Could you gude me with this . Also please explain more about scheduling the receive port . Could I achieve this by scheduling the receive ports.
Any guidence in this matter would be of great help
October 2, 2006 at 10:20 PM in reply to: Need to process messages of type B only after all of Type A processed #15923Hi,
The answer to your question depends on what you mean by "only after all messages of Type A have been processed".
If by this you mean that anytime after all B are processed you can process A then you might look at scheduling your receive ports. Have two receive ports (one for A, one for B) which are set to process B then at some sufficiently long period later, the A port is allowed to be active. Simple but effective.
If on the other hand you mean to say that once all B are processed your A must begin processing immediately, that is somewhat more tricky but still possible. In this case I'd be inclined to do something more radical. If you can detect through outside means that all B have been processed, you could create a pipeline component that could Start/Stop a Receive Location. Then whenver a B message is processed, if the criteria are met, automatically turn on the receive location for A. This is something I'd want to test extensively, and is certainly not something which I have personally done but I imagine with the options in Developer Tools you _could_ do this.
Tim Rayburn
Principal Consultant, Sogeti USA, LLC
http://www.TimRayburn.netThis can be done via the Fault messages/operation of the Request-Response port.
You can certainly access them programatically from .NET code using the EventLogXXX classes in the System.Diagnostics namespace. However, if what you're looking for is subscribing to those messages from within biztalk itself (say, to start an orchestration everytime an entry is logged in the event log), then you might want to look at one of the EventLogAdapters in gotdotnet:
OK, lets simplify this – let's forget the auto-generated Acks and Nacks. All I really need is a conditional message processing through to a Request-Response port
Inside an Orchestration I first pick up and examine a message to determine whether its valid or not. If invalid I want to send a BAD/Failure message and if the message is good, I want to process it and send a "Success" Acknowledgement.
How is this possible? There are 2 sides to the IF condition in the orchestration and only one socket to receive the Send shape arrow in the logical port. I must have 2 Send shapes – one for good and one for bad messages from the 2 branches of the IF condition. But I can attach only one Send shape to the receive socket of the Request-Response port.
-
AuthorPosts