Monday 13 April 2015

RTE in JDE and activating multiple subscribers

I have a situation where I’ve created my own RTE definition in JDE and I’m sending messages out of JDE when a certain event occurs.  I had to make a custom RTE, so much of my code is bespoke (and the trigger points).  Anyway, it’s all working like a treat.

I’m using JMSQUEUE as my transport type and putting in my RTE server as the recipient for all of the messages.

image

As you can see from the above, all pretty simple.

jms/com/peoplesoft/pt/e1/server/enterprise/events/ESBQueueConnectionFactory

in case you don’t want to type the above again.


This matches what you see in hermes JMS


image


Note that this subscriber can have multiple event subscriptions.  This is made up of a group of environments and also subscribed events.  Therefore you could active certain events in certain environments for the single subscriber.  Nice


image


In my case (above) I have two event subscribers, both almost the same except for the queue that the events are going into.  One is for the integration guys to grab the messages and process them.  The other one is like a “tee” (you’ll know this if you are a unix nerd), which allows you to tee or split the output into another queue.  this other queue does not have external subscribers popping the messages off.  Therefore I get to look at the messages and work on them.  I decided to put them into SubQueue00.


When you are finished debugging, just deactivate the subscriber, and you are away!

jms/com/peoplesoft/pt/e1/server/enterprise/events/SubQueue00

Ever wondered what the contents of the message is going to look like?  Well here you go.  this is a composite custom event.


 

<?xml version="1.0" encoding="UTF-8"?>
<jdeResponse xmlns="http://www.schemas.e1.oracle.com" category="RTE" environment="DV900" pwd="" responseCreator="XAPI" role="*ALL" session="3735290" token="" type="realTimeEvent" user="JDE">
<event>
<header>
<eventVersion>1.0</eventVersion>
<type>TNXSESOUT</type>
<user>JDE</user>
<role>*ALL</role>
<application>P55PUTRT</application>
<version>ZJDE0001</version>
<sessionID>3735290</sessionID>
<environment>DV900</environment>
<host>TNXV-420EFB6B</host>
<sequenceID>120</sequenceID>
<date>04132015</date>
<time>220151</time>
<scope />
<codepage>1252</codepage>
<instanceInfo>
<host>TNXV-420EFB6B</host>
<port>6015</port>
<type>JDENET</type>
</instanceInfo>
</header>
<body elementCount="2">
<detail_D553103A DSTMPL="D553103A" date="04132015" executionOrder="0" name="tenix_sendRTED553103A" parameterCount="23" time="22:01:51" type="TNXSESHDR">
<szProgramId>R553104</szProgramId>
<szStatusCodeNextRelease />
<szDateAndTimeStamp />
<szStatusofTransaction>01</szStatusofTransaction>
<szStatusCodeLastRelease />
<szKeyID>2015-04-09T15:42:00+10:00.AN0000000000028</szKeyID>
<szWorkStationId>SVCNPKJDB0</szWorkStationId>
<mnXPITransactionID>7000000018</mnXPITransactionID>
<szInterchangeSenderID>AN01017179323-T</szInterchangeSenderID>
<szInterchangeReceiverID>AN01014368918-T</szInterchangeReceiverID>
<mnTimeLastUpdated>173911</mnTimeLastUpdated>
<szDateCreated>2015-04-09T15:42:00+10:00</szDateCreated>
<szEdiBatchNumber>AN0000000000028</szEdiBatchNumber>
<szMessageString1 />
<mnAmountTaxable>354.07</mnAmountTaxable>
<szCommunicationType>false</szCommunicationType>
<szUserId>VOTERSOJ</szUserId>
<jdDateUpdated>2015/04/07</jdDateUpdated>
<szExpirationDate />
<szCurrencyCodeFrom>AUD</szCurrencyCodeFrom>
<szKeyInfomation>005056AE1D891EE4B4A78A6A7E890185</szKeyInfomation>
<szDateLotReceipt />
<mnLINE_NUMBER_PARENT>10</mnLINE_NUMBER_PARENT>
</detail_D553103A>
<detail_D553104B DSTMPL="D553104B" date="04132015" executionOrder="1" name="tenix_sendRTED553103A" parameterCount="22" time="22:01:51" type="TNXSESDTL">
<szProgramId>R553104</szProgramId>
<mnUnitsTransactionQty>1.000</mnUnitsTransactionQty>
<szStatusofTransaction>01</szStatusofTransaction>
<szUnitOfMeasureAsInput>EA</szUnitOfMeasureAsInput>
<szWorkStationId>SVCNPKJDB0</szWorkStationId>
<mnAmtPricePerUnit2>354.0700</mnAmtPricePerUnit2>
<mnTimeLastUpdated>173911</mnTimeLastUpdated>
<mnDocumentOrderInvoiceE>951771</mnDocumentOrderInvoiceE>
<szORIGINAL_UNIT_OF_MEASURE>C62</szORIGINAL_UNIT_OF_MEASURE>
<szEdiBatchNumber>AN0000000000028</szEdiBatchNumber>
<mnAmountTaxable>354.07</mnAmountTaxable>
<szTaxExplanationCode1>V</szTaxExplanationCode1>
<szTaxArea1>GS</szTaxArea1>
<mnCriticalRatioPriority1>20.00</mnCriticalRatioPriority1>
<szUserId>VOTERSOJ</szUserId>
<szDescription>Distribution Line Fault</szDescription>
<jdDateUpdated>2015/04/07</jdDateUpdated>
<szIdentifier2ndItem>314-2</szIdentifier2ndItem>
<szCurrencyCodeFrom>AUD</szCurrencyCodeFrom>
<cJobStatus />
<szReference1>000110003797</szReference1>
<mnLine>1000100010</mnLine>
</detail_D553104B>
</body>
</event>
</jdeResponse>

1 comment:

HuntingdonHomebrew said...

Hi Shannon,

I'm trying to solve a situation that combines two of your posts: multi-subscription and retriggering an event from the table.
I have two subscribers (two queues) for an RTE event, and need to retrigger that event because it failed in the interface. Do you know of a way I can resend the event message from the RTE Transaction table (90710) but only queue it to one of the subscription queues?

Also do you know if the event data field (edata blob) contains the XML, or raw data that later gets generated into the XML message? We were considering building a workbench on top of the 90710 table for admins to view the records including the XML, select one to be resent, and re-insert it as status 2.

Thanks,
Mike