Setting Target Connector Delivery Modes

This section discusses how to:

  • Specify the target connector delivery mode.

  • Override the target connector delivery mode.

  • Override the Service Operations Monitor contract status for Best Effort delivery transactions.

PeopleSoft provides the following delivery modes for asynchronous service operations:

Field or Control

Definition

Guaranteed Delivery

If Integration Broker is not able to successfully deliver a service operation to its destination, the system automatically re-attempts delivery. The status of a service operation send using guaranteed delivery in the Service Operations Monitor is not Done until Integration Broker receives an acknowledgement from the receiving system.

Guaranteed Delivery is the default delivery mode.

Best Effort

The system makes one attempt to send a service operation to a destination.

Upon sending, the transaction can appear in the Service Operations Monitor as Done or Done NoAck. A status of Done indicates that the transaction was sent to the target system and Integration Broker received an acknowledgement from the target system. A status of Done NoAck indicates that the transaction was sent, but Integration Broker did not receive an acknowledgement of the transaction from the receiving system.

You can override the Service Operations Monitor contract status using PeopleCode.

You can choose either Guaranteed Delivery or Best Effort delivery when using the following target connectors:

  • AS2 target connector. (AS2TARGET.)

  • File Output target connector. (FILEOUTPUT. )

  • FTP target connector. (FTPTARGET.)

  • SFTP target connector. (SFTPTARGET.)

  • Get Mail target connector. (GETMAILTARGET)

  • HTTP target connector. (HTTPTARGET.)

  • JMS target connector. (JMSTARGET.)

  • SMTP target connector. (SMPTTARGET.)

Guaranteed Delivery is the only delivery mode option available for the PeopleSoft 8.1 target connector (PSFT81TARGET) and PeopleSoft target connector (PSFTTARGET).

You set the delivery mode using the Connectors page (IB_NODECONN) in the Nodes component or the Connectors page (IB_ROUTINGDEFNCON) in the Routing component.

Image: Nodes – Node Definitions page

This example illustrates the Connectors tab with Guaranteed Delivery set as the delivery mode.

Nodes - Connectors page

If working with the PeopleSoft 8.1 target connector or the PeopleSoft target connector, the Delivery Mode field is read-only.

You can override the delivery mode set for a target connector by using the .IBConnectorInfo.DeliveryMode property of the IBInfo object and setting it equal to one of the following values:

Field or Control

Definition

%IB_DM_BestEffort

Sets the delivery mode to Best Effort.

Example:

&MSG.IBInfo.IBConnectorInfo.DeliveryMode = 
%IB_DM_BestEffort;
%IB_DM_Guarantee

Sets the delivery mode to Guaranteed Delivery.

Example:

&MSG.IBInfo.IBConnectorInfo.DeliveryMode = 
%IB_DM_Guarantee;
%IB_DM_Reset

Clears any PeopleCode delivery mode override.

Example:

&MSG.IBInfo.IBConnectorInfo.DeliveryMode = %IB_DM_Reset;

The following pseudocode shows overriding the delivery mode to Best Effort prior to a publish:

&MSG=CreateMessage(OPERATION.FLIGHTPLAN);
&MSG.CopyRowset(&FLIGHT_PROFILE);
&Bo=&MSG.IBInfor.LoadConnectorPropFromRouting("FLIGHTPLAN_ASYNC");
&MSG.IBInfo.ConnectorOverride=True;
&MSG.IBInfo.ConnecotrInfo.DeliveryMode=%IB_DM_BestEffort;

%IntBroker.Publish(&MSG);

The system invokes the OnAckReceive PeopleCode event when the status of a publication contract is Done, or Done NoAck.. You can then override the contract status to the following: Done, Error, or Done NoAck.

In the case where best effort delivery was used, if the PeopleCode returns the status of Retry, the Integration Broker framework overrides the status to Done NoAck. To check if the status returned by the system is Done NoAck check the ResponseStatus property on the Message object.

The following pseudo-code demonstrates overriding the publication contract status of Done NoAck using the OnAckReceive event:

import PS_PT:Integration:IReceiver;

class FLIGHTACK implements PS_PT:Integration:IReceiver
   method FLIGHTACK();
   method OnAckReceive (&MSG As Message) Returns integer;
end-class;

/* constructor */
method FLIGHTACK
end-method;

method OnAckReceive
   /+ &MSG as Message +/
   /+ Returns Integer +/
   /+ Extends/implements PS_PT:Integration:Ireceive.OnAckReceive +/
   /+ Variable Declaration +/

   Local Rowset &rs;
   Local string &strException, &data;

   If &MSG.ResponseStatus <> %IB_Status_Success Then
     /+ Done NoAck status returned from IB framework
     can get the actual exception via the IBException Object +/
     &strException = &MSG.IBException.ToString();
     Return %Operation_DoneNoAck;
   End-If

   /* process soap fault and determine what to do +/
   &data = &MSG.GetContentString();

   Return %Operation_Done;

end-method