Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 8118

Re: Process a same file to 2 different receivers based on the timestamp

$
0
0

You can use Enhanced Receiver Determinations. This approach needs two target Business Systems/Services.

Sample code.

package javaapplication1;
import java.io.OutputStream;
import com.sap.aii.mapping.api.AbstractTransformation;
import com.sap.aii.mapping.api.DynamicConfiguration;
import com.sap.aii.mapping.api.DynamicConfigurationKey;
import com.sap.aii.mapping.api.StreamTransformationConstants;
import com.sap.aii.mapping.api.StreamTransformationException;
import com.sap.aii.mapping.api.TransformationInput;
import com.sap.aii.mapping.api.TransformationOutput;
import java.util.Map;
public class JavaApplication1 extends AbstractTransformation {    @Override    public void transform(TransformationInput transformationInput, TransformationOutput transformationOutput) throws StreamTransformationException {        try {            OutputStream outputstream = transformationOutput.getOutputPayload().getOutputStream();            //a) Set "Adapter-Specific Message Attributes" in sender channel. 'File Name'            Map mapParameters = (Map) transformationInput.getInputHeader().getAll();            mapParameters.put(DynamicConfigurationKey.create("http://sap.com/xi/XI/Dynamic", StreamTransformationConstants.DYNAMIC_CONFIGURATION), "");            DynamicConfiguration conf = (DynamicConfiguration) mapParameters.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);            DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File", "FileName");            String FileName = conf.get(key);            //b) If FileName ends with 12 then send it to Receiver1. Else send it to both Receiver1 and Receiver2.            //Edit the if logic. Date class, to find find last day of week. E.g. java.util.Calendar.Calendar.DAY_OF_WEEK            //You can use DOM parser to generate the XML. Else use String, as shown below.            if (FileName.endsWith("12")) {                outputstream.write("<?xml version='1.0' encoding='UTF-8'?><ns0:Receivers xmlns:ns0='http://sap.com/xi/XI/System'><Receiver><Party agency='http://sap.com/xi/XI' scheme='XIParty'></Party><Service>Receiver1</Service></Receiver></ns0:Receivers>".getBytes());            } else {                outputstream.write("<?xml version='1.0' encoding='UTF-8'?><ns0:Receivers xmlns:ns0='http://sap.com/xi/XI/System'><Receiver><Party agency='http://sap.com/xi/XI' scheme='XIParty'></Party><Service>Receiver1</Service></Receiver><Receiver><Party agency='http://sap.com/xi/XI' scheme='XIParty'></Party><Service>Receiver2</Service></Receiver></ns0:Receivers>".getBytes());            }        } catch (Exception exception) {            getTrace().addDebugMessage(exception.getMessage());            throw new StreamTransformationException(exception.toString());        }    }
}

Viewing all articles
Browse latest Browse all 8118

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>