Handling a sync call in a BPM??

Hi there,
I have WS client <> XI <> WS Server scenario, where WS client and WS server, bot are BPMs designed under different business systems.
1.Is it possible to expose a web-service using an abstract interface? or the interface has to be only outbound??
The client posts a message (request) synchronously to the URL of the WS Server.
The WS Server BPM recieves the request message, maps it, and then sends the mapped message (response) back to the client BPM. I have seen scenarios where sync/async bridge is defined in the server BPM. Is it possible to handle the sync call without the sync/async bridge in the server BPM, in my scenario??
Any help is appreciated.

If you are using PM, it should be Abstract Interfaces.
<i>***1.Is it possible to expose a web-service using an abstract interface? or the interface has to be only outbound??</i>
In order to get the message into XI, you need to have Outbound Message Interface. You can not use Absrtact Interface. There is no direction for Abstract Interface. It can act as a both.
In this case you need to have one Outbound as well as one Inbound Interface to send and Receive the Message.
First of all, is it required to have BPM in your scneario. Because both are synchronous here. So you can directly communicate with Synchronous interfaces.
If you want to use BPM , then just have a look at this blog-
https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1403 [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken]
Hope this helps,

Similar Messages

  • Sync call logging?

    We have a scenario where we make a sync call from a BPM to web-service. The logging for successful sync call is turned off, we would like to turn on so that we can see the successful sync calls as well. Does anyone knows how to do this?
    Your help is greatly appreciated.

    are you expecting synchnous log on SXMB_MONI ?
    If so configure these-go to SXMB_ADM->Integration server config ->then add those two specific parameters:
    Category runtime -> logging_sync -> value = 1
    also check this-
    Re: Message Display Tool Access Forbidden.

  • Message expired during sync call from BPM to ECC

    Hi guys,
    I'm doing a sync call to ECC during my BPM processing and it takes approx 2 minutes to the function module there to process the data. And since it takes so long I'm getting following exception for the message in SXMB MONI
    com.sap.aii.af.ra.ms.api.MessageExpiredException: Message xxxxxxxxxxxxxxxxxxxxx (INBOUND) expired
    Any ideas why does this happen and how to solve it?

    Check this links
    Timeout when calling a RFC

  • Sync - async w/o BPM

    I have a scenario where a Bapi functionality(server proxy) is exposed as a webservice .
    So scenario will be SOAP -> XI -> Proxy (calls a BAPI).
    I was thinking of:
    Receiving the call from WS consumer Synchronously and send him back the ACK (just transport level) and end the sync call. Then fwd this request to R3 using Async proxy...but w/o BPM.
    Or can we have a Async call from WS consumer to Xi and from there to R3 proxy and some work around to send back transport level acknowledgement to WS consumer from XI  async.
    plz suggest...
    XI Queries.

    I think you can handle in the sender client end. Check this note
    Note 856597 - FAQ: XI 3.0 / PI 7.0 / PI 7.1 SOAP Adapter
    It states :
    Sender Asynchronous Calls
    Q: What are the correct sender options for asynchronous calls?*
    A: The setting in the channel configuration determines how the message is passed to the XI infrastructure. Setting the channel's quality of service to ExactlyOnce guarantees the delivery of the message exactly once between the adapter and the back end. This will not automatically guarantee the delivery with exactly once between the client and the back end. The behavior of the client determines the level of quality of service achieved.
    When the client sends a SOAP message and ignores the response completely as in "fire-and-forget", the quality of service with AtMostOnce may be realized.
    When the client sends a SOAP message and checks if the response is an HTTP 200 response message with an empty soap envelope or an HTTP 202 response message with no content, the quality of service with AtLeastOnce can be realized. In this case, the client must resend the message until such a successful response is returned. When the message successfully accepted by the adapter, an HTTP 200 response with an empty SOAP envelope or an HTTP 202 response message with no content is returned.
    When the client resends the message, there is a possibility that the message may arrive more than once. However, this possible duplicate only happens, when the client previously received no response message at all.For all other cases, the client can resend the message without resulting any duplicate. In order to eliminate duplicates for all cases, the client may send the message with a unique message ID. This message ID will be used to create an XI message so that the identity of the created XI message and that of the original SOAP message are coupled.The client must resend the message with the same message ID, until, a HTTP 200 response with an empty soap envelope/HTTP 202 without content is received as an acknowledgement and client would not get the DuplicateMessageException in this regard.In either case, the client can assume that the message is delivered exactly once (theoretically the message ID could be identical to another message ID used previously but the probability of this is extremely low).

  • Is there a way to disable program sync calls for filesystem writes?

    First of all I'm only 80% sure I know what I'm talking about with some of these terms regarding how the kernel handles file operations.  If I get something wrong pointing me to documentation to help me understand would be appreciated.
    So I'm setting up Arch on a USB key as sort of a rescue disk/use Linux when I'm not allowed to install install Linux on the computer (like at my inlaw's house) solution.  I'm still early enough in the process that starting over is fine.  I'm going to be using this for a full Arch system, that does things like run pacman updates and a very lightweight Xorg GUI setup.
    Right now I'm going with btrfs, but some other file system that's at least as stable would be fine as well.
    One of the things I'm wanting to have for this is to have as few rewrites to the USB key as possible, while at the same time be workable on computers that have limited RAM.  I'm thinking that if I could tell the kernel to only write to the USB key when it has to, such as running out of memory, unmounting, or shutting down, then that would be one way to accomplish that.  Is there any way to do that?  I would prefer it to be something I can set when I mount a given drive, but if it has to be system wide that would be acceptable as well as long as I could still sometimes run a swap file properly on the computer's hard disk (if I'm in a situation where I am able to do so).  The important thing is that the individual programs don't actually write to the disk when they send a sync call to the kernel, because I'm thinking most programs won't be able to be configured to work the way I want them to directly.
    I understand that this means I would lose everything "written" since the last flush to the drive, but that's fine by me.  Having a way to explicitly have me (as root) say "OK, now flush changes to disk" would be useful as well, but not necessary.

    In iTunes go to Edit > Preferences > Advanced and select the option to prevent automatic syncing of iDevices when plugged in.

  • How to handle system errors in XI using BPM? please help!

    Hi Experts,
         I have a requirement where I have to handle system errors. For example when I am making RFC call using RFC adapter if the remote destination is down then I have create a understandable error message and store it in another SAP table.
    How to handle it? I am using BPM. I can see that there is "Exceptions" in the send step. How to use this?

    Hi Gopalkrishna,
    In this case whenever you get Mapping Exception , you can raise an Exception with the help of BPM and you can send the status to the RFC. But with the help of BPM.
    For a Simple case refer:
    If you want you can do it without a BPM
    and throw an exception in case any of the values is missing:
    have a look at this weblog on how to throw exceptions
    in a nice way:
    Also just go through <a href="/people/sap.user72/blog/2005/02/23/raising-exceptions-in-sap-xi-mapping Exceptions in SAP XI Mapping</a> and see if it helps you solve the problem.
    Also go through these links:
    Please do let know if it helped.

  • JDBC/select/async statement to JDBC/stored procedure/sync call

    We have JDBC/select/async statement to JDBC/stored procedure/sync call i.e sender and receiver are JDBC.
    PI has to pick all the the records of single internal order number at a time from sender system and upload to receiver JDBc,
    gets the response and routes to sender/insert statement.
    This should run only once per day.
    We will have multiple Internal orders daily, each order consisting of 10 to 20 records but only one IO related records has
    to upload to Receiver/JDBC
    What are the options available ?
    We have thought of following options
    1. SQL query is already to pick, but we have to pick records at one time daily. example: morning,evening or midnight.
       At that time it can pick multiple times but it should not pick through out day
    2. Is there any option in BPM so that we can group IO's at a time and upload ? If so what are the steps need to use
       Any additonal receive step need to be used to pick the records from the table.

    as i can understando you, you will receive mani IO and you must execute one IO in the receiver SP? if so, you can solve this usssing a ccBPM where you will have to create a mapping(0.N) where the source and the target structure will be the same, the diferrence will be in the occurrance of the target structure which will have to be 0.N (Tab signature in Message Mapping). then back to the ccBPM define a block with the property ForEach. this will  loop any times accord with the number of IO that you receive from the sender. as a result you will execute one SP for each IO.
    so, you ccBPM will be
    RS>TS>BLOCK(Multiline container and single container of source structure)>TS->SS
    RS:Receive Step
    TS:Trans. Step
    SS:Send Step
    Also the container will be:
    source--> type Abs
    source_multiline --> type Abs
    target -->type Abs
    Rodrigo P.
    Edited by: Rodrigo Alejandro Pertierra on Jun 24, 2010 4:54 PM

  • Long sync calls and timeout.

    2. TIMEOUT
    Consider the following situation :
    Flows 1 --- async call ----> FLows 2 ------ async call --------> Flows 3 -----sync call ----> axis ws
    The last sync call can take a long time.
    If this time is too long , Flows 1 , FLows 2 , Flows 3 goes in stale state ...
    How can i manage timeout/set maximum time for Async and Sync call ?
    What's the best way to manage this ?

    I circled back with the engineering team on this: we are in the process of adding a timeout configuration parameter to the partnerLinkBinding information embedded in the BPEL deployment descriptor (bpel.xml). An associated runtime BPEL fault will be defined for process designer to catch and handle this type of synchronous timeout. This feature will be available in the September service pack.
    The async timeout can be managed using the bpel pick/onMessage and onAlarm.

  • Sync call without receiver

    we want to set up a scenario, that is more a PING on XI than a real scenario:
    In detail:
    a special application should send a SYSC request, to check if XI is online.
    XI sould response sync with a message.
    Because of a missing receiver, I am not sure how to set up this scenario.
    Do I have to use the sync-async bridge with BPM or do you have any workaround?
    Regards Mario

    Hi Mario,
    You can add dummy reciever(like a RFC in R/3),
    but why would you ping XI, there is standard option to do this (called CCMS).CCMS can send you mails or SMSs when XI is down).
    You can use also 2 scenarios:
    1.Asynchronous - writing a file on each ping.
    2.Asynchronous - from file to the system.
    Hope it helps

  • Web service handler could not called in client web service

    Hi All,
    I have two web service ServiceA & ServiceB and both implemented in weblogic.
    The ServiceA is SSL enable and protocol is https which is not published by me.
    The ServieB is my web service(wls8.1) and act as client for ServiceA.
    My problem is when i hit my service, its not able set the handler when it call ServiceA but it is invoking the service and giving application exception like authentication error.
    My service file:
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import javax.xml.namespace.QName;
    import javax.xml.rpc.handler.HandlerInfo;
    import javax.xml.rpc.handler.HandlerRegistry;
    import javax.xml.rpc.handler.soap.SOAPMessageContext;
    import weblogic.webservice.client.SSLAdapterFactory;
    import weblogic.webservice.client.WLSSLAdapter;
    public class HelloService {
    String wsdl = "";
    static {
    SSLAdapterFactory factory = SSLAdapterFactory.getDefaultFactory();
    WLSSLAdapter adapter = (WLSSLAdapter) factory.getSSLAdapter();
    public String sayHello(String user) {
    RemoteService_Impl service = new RemoteService_Impl(wsdl);
    RemotePortType port = service.getRemoteServicePort1();
    String namespace = service.getServiceName()
    QName portName = new QName(namespace,
    HandlerRegistry reg = service.getHandlerRegistry();
    List handlerList = new ArrayList();
    Map map = new HashMap();
    map.put("Username", "user1");
    map.put("Password", "pwd1");
    HandlerInfo info = new HandlerInfo();
    info.setHandlerClass(WSClientHandler .class);
    RemoteServiceResponse = port.callMe(name);
    My Handler file:
    package com.test;
    import java.util.Map;
    import javax.xml.namespace.QName;
    import javax.xml.rpc.handler.Handler;
    import javax.xml.rpc.handler.HandlerInfo;
    import javax.xml.rpc.handler.MessageContext;
    import javax.xml.rpc.handler.soap.SOAPMessageContext;
    import javax.xml.soap.Name;
    import javax.xml.soap.SOAPElement;
    import javax.xml.soap.SOAPEnvelope;
    import javax.xml.soap.SOAPException;
    import javax.xml.soap.SOAPHeader;
    import javax.xml.soap.SOAPHeaderElement;
    public class WSClientHandler implements Handler {
    private HandlerInfo handlerInfo;
    public WSClientAuthenticateHandler(){}
    public void init(HandlerInfo hi) {
    System.out.println("Handler init");
    handlerInfo = hi;
    public void destroy() {
    System.out.println("Handler destroy method called");
    handlerInfo = null;
    public QName[] getHeaders() {
    System.out.println("Handler Header method called");
    try {
    Map map = handlerInfo.getHandlerConfig();
    QName[] headers = handlerInfo.getHeaders();
    System.out.println(" Config :"+map);
    for(int i=0;i<headers.length;i++) {
    System.out.println(headers.getLocalPart()+" "+
    headers.toString()+" "+headers.getNamespaceURI());
    }catch(Exception e) {
    return handlerInfo.getHeaders();
    public boolean handleRequest(MessageContext mc) {
    SOAPMessageContext smc = (SOAPMessageContext) mc;
    System.out.println("Calling handler class.....................");
    try {
    SOAPEnvelope se = smc.getMessage().getSOAPPart().getEnvelope();
    System.out.println("Calling handler class.....................");
    SOAPHeader soapHeader = se.getHeader();
    Name headerName = se.createName("Security","wsse","http://schemas.xmlsoap.org/ws/2002/07/secext");
    SOAPHeaderElement headerElement = soapHeader.addHeaderElement(headerName);
    SOAPElement element = headerElement.addChildElement(se.createName("UsernameToken", "wsse", "http://schemas.xmlsoap.org/ws/2002/07/secext"));
    element.addChildElement(se.createName("Username", "wsse","http://schemas.xmlsoap.org/ws/2002/07/secext")).addTextNode("testuser");
    element.addChildElement(se.createName("Password", "wsse","http://schemas.xmlsoap.org/ws/2002/07/secext")).addTextNode("testpwd");
    System.out.println("Calling handler class.....................");
    System.out.println("** Request: \n "se.toString()"\n");
    }catch(SOAPException e) {
    return true;
    /** * Specifies that the SOAP response message be logged to a
    * log file before the
    * * message is sent back to the client application
    * that invoked the Web service.
    public boolean handleResponse(MessageContext mc) {
    System.out.println("Handler Response method called");
    SOAPMessageContext messageContext = (SOAPMessageContext) mc;
    System.out.println("** Response: \n"messageContext.getMessage().toString()"\n");
    return true;
    /** * Specifies that a message be logged to the log file if a SOAP fault is
    * * thrown by the Handler instance.
    public boolean handleFault(MessageContext mc) {
    SOAPMessageContext messageContext = (SOAPMessageContext) mc;
    System.out.println("** Fault: \n"messageContext.getMessage().toString()"\n");
    return true;
    Please need help here.
    Thanks in Advance,

    I have tested static client calling using handler simple above service and found the issues.
    QName portName = new QName(namespace,
    The above line code has created the issues,becuase in wsdl file ( given similar wsdl file).
    <?xml version="1.0"; encoding="UTF-8"?>
    <definitions name="HelloService"
    <message name="SayHelloRequest">
    <part name="firstName" type="xsd:string"/>
    <message name="SayHelloResponse">
    <part name="greeting" type="xsd:string"/>
    *<portType name="RemoteServicePortType">*
    <operation name="sayHello">
    <input message="tns:SayHelloRequest"/>
    <output message="tns:SayHelloResponse"/>
    <binding name="Hello_Binding" type="tns:*RemoteServicePortType*">
    <soap:binding style="rpc"
    <operation name="sayHello">
    <soap:operation soapAction="sayHello"/>
    <service name="Hello_Service">
    <port binding="tns:Hello_Binding" name="*RemoteServicePortType1*">
    <port binding="tns:Hello_Binding" name="*RemoteServicePortType2*">
    <port binding="tns:Hello_Binding" name="*RemoteServicePortType3*">
    <port binding="tns:Hello_Binding" name="*RemoteServicePortType4*">
    From the above WSDL, I have four port name (port binding="tns:Hello_Binding" name="*RemoteServicePortType1*) which is not matching with PortType (portType name="*RemoteServicePortType*")
    even i have iterated from getPorts() method and used to invoke the service.But handler was not calling when i invoke.
    Please guide me here how i specify correct portname which can call Handler class also.
    Thanks in advance,

  • How do you handle an incoming call while playing a game?

    If you're playing a game on your iPhone, how do you handle an incoming call? A call will stop my app from running, but how do I save the state and restore it when the user starts the app again?
    I have a bunch of objects on-screen and I need to record where they are so that the user doesn't lose the progress of their game.
    I've looked through the SDK, but I can't see anything obvious. Any ideas?

    I don't have a device to test with, but I suspect you'd want to save state in one of the UIApplicationDelegate callbacks:

  • Correlation issue in JMS adapter - SYNC/ASYNC scenario without BPM

    I am working on a SYNC/ASYNC scenario with JMS adapter without using BPM. My scenario is SOAP<>PI>JMS. I configured the interface as below:
    1. SOAP Sender channel
    2. JMS Receiver Channel writing to Queue A.
         Module used:      a. RequestOneWayBean
                   b. WaitResponseBean
         Correlation Settings:
                   a. Set JMS Correlation ID to "XI Message ID"
                   b. Store JMS CorrelationID of request (Checked)
                   c. Set JMS Property to "JMS Correlation Id"
                   d. Value = "XI MEssage ID"
    3. JMS Sender channel reading from queue B ( I am exporting the message from queue A and importing into queue B)
         Module used:      a. NotifyResponseBean
         Correlation Settings:
                   a. Set XI MEssage Id to "GUID"
                   b. Set XI Conversation ID to "Stored JMS COrrelationID of Request"
    I can see the cid in the message from queue A. But I observed thhat the header format of the message in Queue A is "MQSTR".
    1. While writing the message to queue A, below adapter log details(part b) concerned me:
         a. Message '8747a7c2-2b06-11df-8055-005056a70ed6' successfully processed by channel
         b. Could not create acknowledgements for message '8747a7c2-2b06-11df-8055-005056a70ed6'
    I am not sure why I am receiving the message that "  could not create acknowledgements"
    2. While reading the message from the sender channel,I consistently get the error message as below:
         a. XI message ID corresponding to JMS message with ID 'ID:414d51205341504449442e514d202020c67b954b20005602'
              will be created as a new GUID with value '21bca916-424f-41f6-3347-c71090392b58'
         b. Error while processing message '21bca916-424f-41f6-3347-c71090392b58';  detailed error description:
              com.sap.aii.adapter.jms.api.channel.filter.MessageFilterException: found no correlation ID: RecoverableException:
              found no correlation ID at com.sap.aii.adapter.jms.core.channel.filter.SendToModuleProcessorFilter.filter(SendToModuleProcessorFilter.java:105) ...
    Below are the blogs which I have already gone through:
    1. JMS Synchronous Scenario without BPM - Correlation Settings and Transactional JMS Session
    2. Note: 1086303
    3. Sync / Async Bridge without BPM
    In the note, they mentioned something about header being "MQRFH2". BUt in our case, the header is "MSSTR". Not sure whether it makes any difference.
    Please help.
    Edited by: GP on Mar 9, 2010 4:24 AM

    detailed error description:
    com.sap.aii.adapter.jms.api.channel.filter.MessageFilterException: found no correlation ID: RecoverableException:
    found no correlation ID at com.sap.aii.adapter.jms.core.channel.filter.SendToModuleProcessorFilter.filter(SendToModuleProcessorFilter.java:105) ...
    This error would generally arose when there are multiple messages, got stuck in the outbound queue. Try to stop both the sender and receiver JMS comunication channels and clear both the inbound and outbound queues.
    Once all the messages in the queue are cleraed, try posting the message again.

  • Doubt on Sync-Async  bridge using BPM

    Hi Experts,
                     I had a doubt on Sync-Async  bridge using BPM,
       1. If sender system is SAP system and receiver system is non-sap system then while configuring in Integration Directory how many  Receiver Determinations should be done ?
    2.Plz explain if we have 2 receivers i.e one sender SAP system and 2 non-sap systems then what will be the no. of receiver determinations?
    3.How we have to count no. of receiver determinations if we have 2 receivers and 1 receiver system? If so what is the no. of receiver determinations in case of 1 receiver syst and 2 receiver systems?
    Plz clarify above questions  good answers will be definetly rewarded.

    ... Sync-Async bridge and Recievr determination are not related....
    Sync-Async bridge means.. u r sending some request syncronously...and u r expecting the response also in synchronous way... but u r not getting the response  directly...u r getting it via BPM..i.e asynchornously.....
    see here what is the  Use of Synch - Asynch bridge in ccBPM
    and here if u have 2 reciver... u have to create 2 receiver determination and ofcourse for BPM one reciver dtrmination is required.... since in BPM related scenario BPM will act as a reciver...BPM(IP) wil first recive the message then it will be forwarded to Receiver system!!! so total 3.
    <b>3.How we have to count no. of receiver determinations if we have 2 receivers and 1 receiver system? If so what is the no. of receiver determinations in case of 1 receiver syst and 2 receiver systems?</b>
    r u telling that u r having two recivers and each receiver is receiving messages using 2 interaces???
    u have 2 use 2 receiver determination and 4 interface determination.

  • Calling RFC in BPM

    Hi ,
          My requirement is to create a background Job in XI using a set of function modules
    I am calling these function modules in BPM
    the problem I am facing when I call RFC in BPM it is creating new session, the second RFC reads the global data that is created by first RFC, since each RFC is creating a new session, for second RFC the data created(Global table updated in the function pool)  by first RFC is not available.
    Is there any way to solve the problem
    With Regards

    Hi Vardharajan,
    see your RFCs are related to eachother....by BPM it will be difficult because you will have a RFC conn made for each RFC call - so creating a new session in each call..........
    i suggest a workaround for your problem......create a single RFC which will have all your above RFCs......then you can get the data of second RFC in first RFC as all rfcs will then be in a single RFC............call this RFC from BPM.......
    Rajeev Gupta

  • SOAP Receiver sync call timeout

    Hi guys, I need to increase the sync call timeout value for SOAP adpter as my receiver system has vaery slow response time. Which parameter to set? Currently is the message valid for 3 minutes.
    Thanks, Andrzej

    XI.Timeout can be used with the SOAP sender, and XMBWS.Timeout for the SOAP receiver.
    There are further details in note - 856597
    Q: Can I increase the default timeout value for the sender
    A: Yes. The default timeout value for synchronous calls is 5        
    minutes. You can increase this value by setting parameter           
    XI.Timeout in the module parameter table of the SOAP adapter.
    Q: Can I configure the timeout value of my receiver adapter?

Maybe you are looking for

  • Using Photoshop for offset printing projects (packaging) - simple or complex?

    Hi, I'm about to start a new project. It's a product package (box). Normally, I would do this in Illustrator. However, I was wondering if I could do it all in Photoshop by saving the final output as a PDF. I've only ever used Photoshop in 4-color pro

  • How do I convert pdf file to word?

    I have received multiple choice questions in pdf file. I want to convert to word. How do  it?

  • How to identify corrupted block in Particular tablespace?

    Hi, i am getting lot of block corruption error from particular tablesapce datafile. i couldn't able to use DBVerify utility .bcz datafiles not created using .dbf format. how to idetify corrupted blocks?

  • ClassCastException on arraylist?

    Code: package soft.lit3.dev.AI.parsers; import java.util.ArrayList; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import soft.lit3.dev.AI.Types.Template; public class TemplateParser {  

  • Podcast not sychronizing correctly

    When i Synchronize my iPhone, played/unplayed podcasts do not synchronize correctly, same problem with subscriptions, deleted podcasts, etc. Can i solve this problem? How?