Dynamic Correlation

Hi All
In message I am getting 4 requests for 4 receivers.
In correlation I need to use receiver system name along with Username.
User name is constant for all the receiving systems but Tricky is System name differs.
How can I put dynamic correlation in my BPM?

>
chitra l wrote:
> Hi All
>
> In message I am getting 4 requests for 4 receivers.
> In correlation I need to use receiver system name along with Username.
> User name is constant for all the receiving systems but Tricky is System name differs.
>
> How can I put dynamic correlation in my BPM?
have your user name and system name concatenated into one field and use this field as the correlation

Similar Messages

  • JMS Correlation ID not converting to EBCDIC Hexa

    We are using the PI 7.1 system on a AIX platform.
    We use the JMS adapter to send messages to a MQ Queue manager on a AS400platform.
    WebSphereMQ transport protocol is in JMS adapter.
    We are generating custom dynamic correlation id using a UDF.
    Expectation is to receive the correlation id in Ebcdic format because the
    receiving end is a AS400 system.
    But what I receive there is a Ascii Hexa.
    For a example we are sending the correlation id as 0180000012. (ASCII)
    What MQ receive is 30313830303030303132 (ASCII HEX)
    Where what MQ should receive is F0F1F8F0F0F0F0F0F1F2 (EBCDIC HEX)
    I need help to find out why JMS adapter is converting the correlation id
    in to ASCII HEX without converting to EBCDIC HEX.
    Appreciate a lot if any one can provide some help on this.
    Thanks a lot,
    Tania.

    I am not sure if I have understand the issue correctly.
    Do you create an ASCII string and the ASCII characters are not converted into EBCDIC,
    or do you create a HEX String?
    Or does the JMS adapter converts your ASCII string to Hex?
    I have the impression that the behaviour is a design gap, which nobody has noticed before.
    A work around could be in converting the ASCII to EBCDIC inside the UDF,
    Report this to SAP

  • BPM Correlation from Dynamic Configuration not being filled

    Hey guys,
    I'm having the following problem with BPM correlation.
    In my correlation definition, I have 2 fields: one which is filled with information from the message payload, and another one which is filled with a context object (which was created with adapter metadata and filled with dynamic configuration, as refered here: /people/michal.krawczyk2/blog/2006/10/09/xi-dynamic-configuration-in-adapter-modules--one-step-further).
    All instances of BPM are with error status. And when I go into the workflow log for these processes, if I check the correlation object, it is like this:
    <?xml version="1.0" encoding="utf-8" ?>
    <CorrelationKey Version="001">
    <Field1 />
    <Field2>123456789</Field2>
    </CorrelationKey>
    Field1 is the one read from context object, and is not being filled (thus I think the error comes from here). Field2 is from payload and is being normally filled.
    Any ideas on this matter?
    Maybe the problem is not from the correlation. If not, what else could be the case? The BPM crashes on the very first step (one more reason to think that the correlation is the issue).
    Thanks in advance,
    Henrique.

    HI,
    In general Correlation , concept, whatever we configured in Correlation editor , i mean in runtime which xml element should filled with which element of which interface ..as you said you have configured the local correlation to block, in block it is the first receive step, while receiving the first message which is relevent to first recieve step , i mean if it receives the one message which is related to first receive step inteface .. the respective element data will be filled in correlation id and it will assign on giud for processing , so while assign the runtime data to correlation element ( imean filling stage) check you said two elements in correlation does the first message contains these two elements ??
    if so ok , no then check , and try to use the IM before calling the IP to fill the payload.
    Regards
    Chilla
    Oh closed!!
    Message was edited by:
            Chandra Sekhar Chilla
    Message was edited by:
            Chandra Sekhar Chilla

  • [sentinel] correlation problem and dynamic list

    Dear All,
    I have two problems as following:
    1. I have write a correlation rule as following:
    filter((((e.CollectorPluginName = "Microsoft Exchange POP3") and
    (e.EventName = "pass")) and (e.XDASOutcomeName = "XDAS_OUT_FAILURE")))
    flow window(((w.SessionID = e.SessionID) and (e.SourceIP =
    w.SourceIP)),filter((((e.CollectorPluginName = "Microsoft Exchange
    POP3") and (e.EventName = "user")) and (e.TargetNewResourceName inlist
    sensitiveuser))),120) flow
    trigger(5,120,discriminator(e.SourceIP,e.TargetNew ResourceName))
    I have following problem:
    I will call the first filter event as A event, the second filter event
    as B event, the first filter corresponding log include username field
    named TargetNewResourceName, the second filter event also called as
    storaged event,
    but B event log does not include username field, so I don`t know who
    logon failed, so i need gain the username from A event, there is same
    sessionID between A and
    B, customer`s demands need know who logon failed when user logon to
    pop3 mailbox failure three times, so correlation results is following:
    username: $TargetNewResourceName$ logon to mailbox failure via pop3 at
    least 3 times in two minutes, sourceip: $SourceIP$,
    MacAddress:$CSOTSourceMac$,Please pay
    attention to it!
    But correlation result is following:
    username: Null logon to mailbox failure via pop3 at least 3 times in two
    minutes, sourcip: 10.108.54.50, MacAdress: 247703743F34,Please pay
    attention to it!
    There is no username value($TargetNewResourceName$), why?
    2. I know arcsight active list(same as sentinel dynamic list) support
    multiple fields in one table, but sentinel dynamic list only support
    alone value,
    if I want storage ip and macaddress for DHCP logs into one table, How to
    implement? and that I also correlation rule can invoke function same as
    get_ipaddress or
    get_dhcpaddress in arcsight, Does sentinel provide same function?
    thanks
    steve_zeng
    steve_zeng's Profile: https://forums.netiq.com/member.php?userid=3875
    View this thread: https://forums.netiq.com/showthread.php?t=48076

    This sounds like a Sentinel product, vs. Sentinel plugin, issue. Please
    post it in the Sentinel list on forums.netiq.com to get exposure to the
    largest group of people who may be able to help. This list is
    specifically for plugins.
    Also, when posting in the other list, if you can post the raw data from
    each of the events that may help others understand with which data you
    have to work.
    Good luck.

  • Accessing dynamic configuration variables for correlation in BPM

    Hi,
    we are not able to access the runtime variables/ context objects while using correlation in BPM.
    is this the a problem with SP levels.. My server is in PI SP 9
    What might be the problem..??
    Regards,
    Rajesh

    Hi,
    Where you are not able to see the context objects???
    In ID----Receiver det or in BPM???
    Regards
    Seshagiri

  • Dynamic configuration not fil in reused OM in NW BPM

    Hi,
    I'm having problem in operation mapping that i re-used in nw bpm.
    In my scenerio in the operation mapping, a UDF writes on "TServerLocation" and in the next step of BPM, i have receiver determination rule which read from "TServerLocation" variable.
    Below step calls OM which in PI.
    (UDF writes on TserverLocation)
    This next step, reads TserverLocation in receiver tab of Integration Conguration.
    Receiver rule
    So the problem is dynamic configuration doesn't write on TserverLocation or integration confiuration object removes in soap header somehow.
    This was a ccBPM integration and all esr objects, mapping,udfs working fine. No problem with that.
    I checked below blog but not get this work.
    Dynamic Configuration not working with Integrated Configuration
    Has anyone faced similar problem ?
    Thank you
    -Tahir

    HI,
    In general Correlation , concept, whatever we configured in Correlation editor , i mean in runtime which xml element should filled with which element of which interface ..as you said you have configured the local correlation to block, in block it is the first receive step, while receiving the first message which is relevent to first recieve step , i mean if it receives the one message which is related to first receive step inteface .. the respective element data will be filled in correlation id and it will assign on giud for processing , so while assign the runtime data to correlation element ( imean filling stage) check you said two elements in correlation does the first message contains these two elements ??
    if so ok , no then check , and try to use the IM before calling the IP to fill the payload.
    Regards
    Chilla
    Oh closed!!
    Message was edited by:
            Chandra Sekhar Chilla
    Message was edited by:
            Chandra Sekhar Chilla

  • SQL Bug in "Minus" in correlated subquery presence of index (11.2.0.1.0)

    SQL Bug in "Minus" in correlated subquery presence of index
    (Oracle Database 11g Release 11.2.0.1.0)
    Below, there is a small example that shows the bug. Further below,
    there are some more comments.
    drop table Country;
    create table Country
    (code VARCHAR2(4) constraint countrykey PRIMARY KEY,
    name VARCHAR2(35));
    -- if the key constraint is not given, the bug does not occur
    drop table City;
    create table City
    (name VARCHAR2(35),
    country VARCHAR2(4),
    population number);
    drop table Locatedon;
    create table Locatedon
    (city VARCHAR2(35),
    country VARCHAR2(4),
    island VARCHAR2(35));
    insert into country values('E','Spain');
    insert into country values('F','France');
    insert into country values('S','Sweden');
    insert into country values('GB','Sweden');
    insert into city values('Ajaccio','F',53500);
    insert into city values('Paris','F',2152423);
    insert into city values('Palma','E',322008);
    insert into city values('Madrid','E',3041101);
    insert into city values('Stockholm','S',711119);
    insert into city values('London','GB',6967500);
    insert into locatedon values('Ajaccio','F','Corse');
    insert into locatedon values('Palma','E','Mallorca');
    insert into locatedon values('London','GB','Great Britain');
    -- all countries that have a city that is not located on
    -- some island: should be E, F, S.
    Select c.name
    From country c
    Where exists
    ((Select name
    From city
    Where city.country=c.code)
    minus
    (Select city
    From locatedon
    Where locatedon.country=c.code)
    -- wrong answer: only Sweden; Spain and France not in the answer!
    select distinct country from
    ((Select name, country
    From city)
    minus
    (Select city, country
    From locatedon)
    -- correct answer: E, F, S
    Comments:
    The bug has been found by students in our SQL course.
    Using a larger database from that course, the bug can be reproduced
    (same queries as above) at
    http://www.semwebtech.org/sqlfrontend/
    (wrong: 142 answers, correct: 154 answers)
    During reducing it to a simple sample, there were some interesting
    observations: trying with smaller and simpler tables (without the keys)
    and synthetic data, the bug did not occur immediately. When
    restating the query after about one day, the bug occurred. Obviously,
    Oracle creates some index on its own in course of its internal
    optimization that (or more exactly, its usage) exhibits the bug. The
    query plan (showed in SQL Developer) was the same before and after.
    Wolfgang

    There's a typo in the test data - GB should presumably not be in Sweden. However....
    the bug did not occur immediatelyIt's possible. But what would have almost certainly happened is that the execution plan DID change at some point. There are various reasons why it might not be immediate.
    Obviously, Oracle creates some index on its own in course of its internal optimizationFar from obvious, what are you on about?
    The query plan was the same before and afterBet you it wasn't.
    A clear illustration of the issue and indication that it must be a bug is below.
    Simply by hinting a different access method, we can change the result. Therefore, bug.
    See [url http://support.oracle.com]Oracle Support and search for "wrong results".
    Please raise with Oracle Support to get confirmation of bug.
    There have been so many wrong results bugs recently, it's getting ridiculous.
    It's a real issue, IMHO.
    If you can't trust the DB to get your data right....
    Note that the query plan is very much NOT the same and it is the difference in query plan which s that is the root cause of the bug.
    SQL> select * from v$version;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    PL/SQL Release 11.2.0.2.0 - Production
    CORE    11.2.0.2.0      Production
    TNS for Linux: Version 11.2.0.2.0 - Production
    NLSRTL Version 11.2.0.2.0 - Production
    SQL> SELECT c.name
      2  FROM   country1 c
      3  WHERE  exists ((SELECT name
      4                  FROM   city1
      5                  WHERE  city1.country=c.code)
      6                  MINUS
      7                 (SELECT city
      8                  FROM   locatedon1
      9                  WHERE  locatedon1.country=c.code));
    NAME
    Sweden
    SQL> SELECT /*+ full(c) */
      2         c.name
      3  FROM   country1 c
      4  WHERE  exists ((SELECT name
      5                  FROM   city1
      6                  WHERE  city1.country=c.code)
      7                  MINUS
      8                 (SELECT city
      9                  FROM   locatedon1
    10                  WHERE  locatedon1.country=c.code));
    NAME
    Spain
    France
    Sweden
    SQL> explain plan for
      2  SELECT c.name
      3  FROM   country1 c
      4  WHERE  exists ((SELECT name
      5                  FROM   city1
      6                  WHERE  city1.country=c.code)
      7                  MINUS
      8                 (SELECT city
      9                  FROM   locatedon1
    10                  WHERE  locatedon1.country=c.code));
    Explained.
    SQL> select * from table(dbms_xplan.display);
    PLAN_TABLE_OUTPUT
    Plan hash value: 156929629
    | Id  | Operation                    | Name       | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT             |            |     1 |    27 |    12  (25)| 00:00:01 |
    |   1 |  NESTED LOOPS                |            |       |       |            |          |
    |   2 |   NESTED LOOPS               |            |     1 |    27 |    12  (25)| 00:00:01 |
    |   3 |    VIEW                      | VW_SQ_1    |     6 |    24 |    10  (20)| 00:00:01 |
    |   4 |     MINUS                    |            |       |       |            |          |
    |   5 |      SORT UNIQUE             |            |     6 |   138 |            |          |
    |   6 |       TABLE ACCESS FULL      | CITY1      |     6 |   138 |     4   (0)| 00:00:01 |
    |   7 |      SORT UNIQUE             |            |     3 |    69 |            |          |
    |   8 |       TABLE ACCESS FULL      | LOCATEDON1 |     3 |    69 |     4   (0)| 00:00:01 |
    |*  9 |    INDEX UNIQUE SCAN         | COUNTRYKEY |     1 |       |     0   (0)| 00:00:01 |
    |  10 |   TABLE ACCESS BY INDEX ROWID| COUNTRY1   |     1 |    23 |     1   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       9 - access("VW_COL_1"="C"."CODE")
    Note
       - dynamic sampling used for this statement (level=4)
    26 rows selected.
    SQL> explain plan for
      2  SELECT /*+ full(c) */
      3         c.name
      4  FROM   country1 c
      5  WHERE  exists ((SELECT name
      6                  FROM   city1
      7                  WHERE  city1.country=c.code)
      8                  MINUS
      9                 (SELECT city
    10                  FROM   locatedon1
    11                  WHERE  locatedon1.country=c.code));
    Explained.
    SQL> select * from table(dbms_xplan.display);
    PLAN_TABLE_OUTPUT
    Plan hash value: 1378726376
    | Id  | Operation            | Name       | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT     |            |     1 |    23 |    14  (15)| 00:00:01 |
    |*  1 |  FILTER              |            |       |       |            |          |
    |   2 |   TABLE ACCESS FULL  | COUNTRY1   |     4 |    92 |     4   (0)| 00:00:01 |
    |   3 |   MINUS              |            |       |       |            |          |
    |   4 |    SORT UNIQUE       |            |     1 |    23 |     5  (20)| 00:00:01 |
    |*  5 |     TABLE ACCESS FULL| CITY1      |     1 |    23 |     4   (0)| 00:00:01 |
    |   6 |    SORT UNIQUE       |            |     1 |    23 |     5  (20)| 00:00:01 |
    |*  7 |     TABLE ACCESS FULL| LOCATEDON1 |     1 |    23 |     4   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       1 - filter( EXISTS ( (SELECT "NAME" FROM "CITY1" "CITY1" WHERE
                  "CITY1"."COUNTRY"=:B1)MINUS (SELECT "CITY" FROM "LOCATEDON1" "LOCATEDON1"
                  WHERE "LOCATEDON1"."COUNTRY"=:B2)))
       5 - filter("CITY1"."COUNTRY"=:B1)
       7 - filter("LOCATEDON1"."COUNTRY"=:B1)
    Note
       - dynamic sampling used for this statement (level=4)
    27 rows selected.Just to show that it's related to query transformation:
    SQL> SELECT /*+ 
      2             no_query_transformation
      3         */
      4         c.name
      5  FROM   country1 c
      6  WHERE  exists ((SELECT name
      7                  FROM   city1
      8                  WHERE  city1.country=c.code)
      9                  MINUS
    10                 (SELECT city
    11                  FROM   locatedon1
    12                  WHERE  locatedon1.country=c.code));
    NAME
    Spain
    France
    Sweden
    SQL> Edited by: Dom Brooks on Jun 30, 2011 2:50 PM

  • JMS Correlation ID in JMS Receiver Adapter

    Hi ,
    I am working in PI7.1 on IDOC to JMS interface,
    I want set IDOC number as Correlation ID in JMS queue ,
    I did following Correlation steps ,
    1. Set JMSCorrelation ID to PI Conversation ID
    2. Checked JMS CorrelationID of request
    3.Value to PI Conversation ID
    In Adavanced Tab
    Checked Use Adapter specific Message attributes
    Checked Fial if Adapter specific Message attributes missing
    Checked JMS Message Correlation ID
    Additional Parameter
    DCJMSCorreleationID String
    I have created user defined function , Not using BPM , i don't have correlation ID in target field data type
    DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/JMS", "DCJMSCorreleationID");
    return conf.put(key, idoc_number); 
    I tested UDF with mapping to target field, UDF is working .
    But in JMS Correlation ID value is null
    I am getting error in Communication Channel  monitor if ticked check box of fail If adapter-specific message attributes
    Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Dynamic header records are missing/incorrect specified in message: 000c2901-fc48-1def-82f9-4b126dff2151. Erroneous/Unspecified headers are: DCJMSCorreleationID
    1/27/10 11:02:36 PM 000c2901-fc48-1def-82f9-4b126dff2151 Dynamic record/records: DCJMSCorreleationID, that correspond to the JMS property/properties: JMSCorrelationID, respectively is/are either missing from the message: 000c2901-fc48-1def-82f9-4b126dff2151, or have invalid types specified in the channel configuration

    Hi Swetha ,
    Thanks for your response ,
    I created user defined function with one parameter , no input parmeter .
    My root node of IDOC as Structure type ,
    In UDF , i have not mapped the IDOC number
    public String CorrelationID(String messageId, Container container) throws StreamTransformationException{
    DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/JMS", "DCJMSCorreleationID");
    return conf.put(key, messageId);
    messageId  I need map in additonal parameter .
    Thanks ,
    Laxman.
    DCJMSCorreleationID     messageId

  • How to set the Correlation ID in Oracle Q from JMS Adapter

    Hi,
    I'm using a JMS Adapter on my BPEL process to push messages to an Oracle instance in another machine.
    While testing, I could see that a message is posted on the Q table, but the Correlation ID is null.
    How is the correlation ID on the Q set from the adapter? IDeally I want this ID dynamic to be unique.
    Is this something st on the Invoke activity to the jms adapter, i.e., the Correlations tab, or is that
    unrelated altogether.
    Thanks,
    Ramon

    Found the solution.
    On the Invoke activity, I set the property jca.jms.JMSCorrelationID to a variable I created.
    I set my variable to string appended with sysdate to make it unique.

  • Correlation in BPEL

    Hi,
    I was trying out a requirement in BPEL. I need to create a correlation set with a value that I generate within the process .
    I see that, when u define the correlation(property alias) it is mandatorily related to a message type and the Xpath points to a variable in the payload.
    What if I want the variable to be from an internal scope variable that is generated during the process.
    Is there an option to modify the correlation set property value, dynamically from within the process , once it has been initiated. Hope the Question is clear.
    Thanks.

    Hi
    Both the above URLS are not working fine. They are not showing the sample demos, when clicking on it.
    It is redirecting to the other page.
    Can anybody any other URLS other than this.
    Regards,
    CH

  • Correlating on Directory problem

    Dear All,
    I have some strange problem with correlation. In BPM there is a fork with 2 recieve steps which are recieving filea.
    If I correlate on Directory every time a new instance of BP is created (even is the files where form the same directory(in CCs the Directory checkbox is also marked)). Then I tried to change the correlation to SenderService and it works perfectly, as the files come from one Sender than no new instances of BP are created.
    Any ideas what can be wrong with directories? (I have checked in XML Dynamic Configuration and the Directory names are for sure the same, but the correlation doesn't work).
    Best Regards,
    Artsiom Anichenka

    From what I've seen, there is really a bug there.
    Even though you are able to select ASMAs in the expression editor of the correlation editor, they won't be filled by BPE. I'd say to raise an OSS.
    Meanwhile, if you need to make the scenario work right away, you should extend your data type to contain the directory in the payload (and fill it with dynamic configuration in a mapping).
    Regards,
    Henrique.

  • Setting security credentials dynamically in Oracle BPEL

    Hi,
    I am tring to pass security credentials dynamically to partner link in oracle BEPL using following code(.bpel). But when i try to complie i am getting below error
    Error:
    [Error ORABPEL-10902]: compilation failed
    [Description]: in "bpel.xml", XML parsing failed because "undefined part element.
    In WSDL at "file:/D:/BEPL/OWSM/CustomHeader/bpel/CustomHeader.wsdl", message part element "{http://xmlns.oracle.com/CustomHeader}CustomHeaderProcessResponse" is not defined in any of the schemas.
    Please make sure the spelling of the element QName is correct and the WSDL import is complete.
    [Potential fix]: n/a.
    please help me to sort out above problem. I want to pass the credentials dynamically to partner link in oracle BEPL is it the raight way to do. Kndly respond if any other way.
    <?xml version = "1.0" encoding = "UTF-8" ?>
    <!--
    Oracle JDeveloper BPEL Designer
    Created: Tue Apr 14 15:51:03 IST 2009
    Author: sivaramakrishnaa
    Purpose: Synchronous BPEL Process
    -->
    <process name="BPELSycProcess"
    targetNamespace="http://xmlns.oracle.com/BPELSycProcess"
    xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:ns4="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
    xmlns:ns1="http://datespackage/"
    xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:client="http://xmlns.oracle.com/BPELSycProcess"
    xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
    xmlns:ora="http://schemas.oracle.com/xpath/extension"
    xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc">
    <!--
    PARTNERLINKS
    List of services participating in this BPEL process
    -->
    <partnerLinks>
    <!--
    The 'client' role represents the requester of this service. It is
    used for callback. The location and correlation information associated
    with the client role are automatically set using WS-Addressing.
    -->
    <partnerLink name="client" partnerLinkType="client:BPELSycProcess"
    myRole="BPELSycProcessProvider"/>
    <partnerLink myRole="GetDatesWS_Role" name="GetDatesWS"
    partnerRole="GetDatesWS_Role"
    partnerLinkType="ns1:GetDatesWS_PL"/>
    </partnerLinks>
    <!--
    VARIABLES
    List of messages and XML documents used within this BPEL process
    -->
    <variables>
    <!-- Reference to the message passed as input during initiation -->
    <variable name="inputVariable"
    messageType="client:BPELSycProcessRequestMessage"/>
    <!-- Reference to the message that will be returned to the requester-->
    <variable name="outputVariable"
    messageType="client:BPELSycProcessResponseMessage"/>
    <variable name="Invoke_GetDate_getDate_InputVariable"
    messageType="ns1:GetDatesWS_getDate"/>
    <variable name="Invoke_GetDate_getDate_OutputVariable"
    messageType="ns1:GetDatesWS_getDateResponse"/>
    <variable name="wscheaders" element="ns4:Security"/>
    </variables>
    <!--
    ORCHESTRATION LOGIC
    Set of activities coordinating the flow of messages across the
    services integrated within this business process
    -->
    <sequence name="main">
    <!-- Receive input from requestor. (Note: This maps to operation defined in BPELSycProcess.wsdl) -->
    <receive name="receiveInput" partnerLink="client"
    portType="client:BPELSycProcess" operation="process"
    variable="inputVariable" createInstance="yes"/>
    <!-- Generate reply to synchronous request -->
    <assign name="Assign_1">
    <copy>
    <from>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:Username>siva </wsse:Username>
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">kris</wsse:Password>
    </wsse:UsernameToken>
    </wsse:Security>
    </from>
    <to variable="wscheaders"/>
    </copy>
    </assign>
    <assign name="Assign_Before">
    <copy>
    <from expression="'Before Service Invoke'"/>
    <to variable="inputVariable" part="payload"
    query="/client:BPELSycProcessProcessRequest/client:input"/>
    </copy>
    </assign>
    <invoke name="Invoke_GetDate" partnerLink="GetDatesWS"
    portType="ns1:GetDatesWS" operation="getDate"
    inputVariable="Invoke_GetDate_getDate_InputVariable"
    outputVariable="Invoke_GetDate_getDate_OutputVariable"
    bpelx:inputHeaderVariable="wscheaders"/>
    <assign name="Assign_After">
    <copy>
    <from expression="'After Service Invoke'"/>
    <to variable="inputVariable" part="payload"
    query="/client:BPELSycProcessProcessRequest/client:input"/>
    </copy>
    </assign>
    <reply name="replyOutput" partnerLink="client"
    portType="client:BPELSycProcess" operation="process"
    variable="outputVariable"/>
    </sequence>
    </process>
    Thanks & Regards,
    Siva

    There are so many limitations on what can and cannot be done in Apps related forms so you should ask this question in the relevant Apps forum: OA Framework (I would think)

  • Setting correlation ID in header (DCJMSCorreleationID) for Tibco

    For communication via JMS we set the correlation ID during message mapping using a field from the outbound message but. The message contains the correlation id:
    <sap:DynamicConfiguration SOAP:mustUnderstand="1">
         <sap:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSCorrelationID"></sap:Record>ID:EMS-SERVER.7F849230A40AC4:36</sap:Record>
         <sap:Record namespace="http://sap.com/xi/XI/System/JMS" name="DCJMSMessageID">MPR</sap:Record>
    </sap:DynamicConfiguration>
    but we get the following error:
    MP: Exception caught with cause com.sap.aii.af.ra.ms.api.RecoverableException: Dynamic header records are missing/incorrect specified in message: 12232949-e46f-767b-e100-00000ad57c64. Erroneous/Unspecified headers are:\[ DCJMSCorreleationID \]

    If the header attribute for the JMS Message Correlation ID shall be set for example in an UDF one must use the string DCJMSCorreleationID . (Note the e after the l DCJMSCorrel e ationID). We accidently used DCJMSCorrelationID . Thanks Stefan for pointing that out!

  • Dynamic Quee names in JMS Channel

    Hi,
    Message is being sent from SAP -> PI -> TIBCO using JMS queues using JMS channels.
    Is it possible to configure the queue names based on the value in the message?
    Thanks,
    Aravind

    Hi,
    you need to set a dynamic queue in PI or in JMS ?
    the blog mentiones how to create a queue in PI (on the basis of content)
    and that's how I understood your question...
    if you want to set dynamic queue for the JMS then I don't know the way
    hope we're talking about the same thing here
    BTW
    with JMS receiver you can only set those values dynamically:
    JMS Message Correlation ID DCJMSCorreleationID
    JMS Message Expiration DCJMSExpiration
    JMS Message Priority DCJMSPriority
    JMS Message ReplyTo Destination DCJMSReplyTo
    JMS Message Timestamp DCJMSTimestamp
    and JMS message properties but not the queue name
    if you need to set a queue name in JMS dynamically (and we did that in our project)
    was to send everything to one queue (router queue) and the real queue name was specifed in the JMS message property
    and JMS (activeMQ - camel) was able to distribute from dummy queue to the one from the JMS message property
    (config only - no coding so I'd assume most of the JMS should be able to do the same)
    Regards,
    Michal Krawczyk

  • BPM correlations

    Hi friends,
         I am doing file to file sceanrio using BPM. The scenario is it is having 2 input files as inputand one file as output.So i have used BPM. In that i have used fork step.In fork, i have used 2 receive steps.It is asking for correlation. How to give correlation?What name we have to give?Please explain and provide the solution for solving the correlation problem.
    Thanks,
    Leela

    Hi Leela,
    Use a BPM to collect the files. You will need corelation and then use the Transformation Step to create the mapping , Switch for checking of any conditions etc.
    Check this link for example scenarios,
    http://help.sap.com/saphelp_nw04/helpdata/en/de/766840bf0cbf49e10000000a1550b0/content.htm
    Corelation is used when you have multiple Receive Steps in your BPM.
    Consider a case, when you have multiple receive in a fork in a BPM.
    Say receive A of branch 1 receives a file and is waiting for the file for receive B of branch 2 of the fork. Before, this file is available, say another BPM is instantiated because receive A has got the file. So, we have 2 active BPM's waiting for the Files of Recive B.
    When this file is available how to determine which BPM this belongs to? The first or second? This is solved using Correlation.
    In your case, as you have one receive and then multiple Send steps you do not need corealtion.
    This may help you in BPM:
    Recive Step
    You can use a receive step for the following purposes:
    Starting an Integration Process
    Receiving Messages in Integration Processes
    Defining Sync/Async Communication
    Send Step
    You can use a send step () for the following purposes:
    · Sending Messages from Integration Processes Asynchronously
    · Sending Messages from Integration Processes Synchronously
    · Sending Acknowledgements from Integration Processes
    · Defining Sync/Async Communication
    Reciever Determination Step
    You use a receiver determination step () to get a list of receivers for a subsequent send step. The receiver determination step calls the receiver determination that you configured in the Integration Directory and returns the receiver list.
    Transformation Step
    You use a transformation step ( ) to do the following:
    ● n:1 Transformation
    Bundles multiple messages into one message, for example, individual purchase order items into one purchase order.
    ● 1:n Transformation
    Splits a message into multiple messages, for example, a purchase order into the individual purchase order items.
    ● 1:1 Transformation
    Converts a message into another message, for example, a message that is defined by interface A is converted to message that is defined by interface B.
    Switch
    You use a switch () to define different processing branches for a process. The Otherwise processing branch is created automatically.
    You define a condition for each processing branch (see also: Condition Editor). The condition is checked at runtime. The process is continued in the branch that is first to return the value true. If no branch returns the value true, then the process is continued in the Otherwise branch.
    The system checks the conditions in the order that they are numbered. This corresponds to the following sequence:
    · Vertical layout: From top to bottom
    · Horizontal layout: From left to right
    Container Operation
    You use a container operation () to set a value for a target container element at runtime (see also: Defining the Data of a Process in Containers). The target container element and the assigned value must have the same data type. To specify the value, use the expression editor (see also: Using the Expression Editor .
    You can:
    · Assign
    Assigns a value to a single line or multi-line container element. This value overwrites the previous value. You can use this container operation to count a counter variable, for example.
    · Append
    Appends a value to a multiline container element. For example, you can use this container operation to append individual messages to multiline container elements when gathering messages together.
    Control Step
    You use a control step () to do the following:
    · Terminate the current process
    · Trigger an exception
    · Trigger an alert for Alert Management (see also: Triggering an Alert)
    Block
    You use a block () to combine steps that you want to execute one after the other and which are to access the same local data (see also: Containers). You can also use a block to combine steps that you want to have the same deadline or exception handler, or to define a local correlation.
    You can define the mode Parallel For Each(ParForEach) for a block or Dynamic Sequence (ForEach). This means that the block is executed for all elements of a multi-line container element.
    Fork
    You use a fork () when you want to continue a process in branches that are independent of each other, for example, to communicate with two systems that are independent of each other. The branches of the fork join in a union operator.
    You can specify the required number of branches and then define whether the process must run through all branches, or just a particular number of branches. Furthermore, you can define an end condition for the fork (see also: Condition Editor).
    As soon as a branch reaches the union operator at runtime, the system checks the following conditions in the specified order:
    · The process has run through the required number of branches
    · The specified end condition has returned true
    The step is complete as soon as one of the conditions returns true.
    Loop
    You use a loop ( ) to repeat the execution of steps within the loop. The loop continues to run while the end condition returns true (while loop).
    To specify the end condition, use the condition editor.
    Wait Step
    You use a wait step () to incorporate a delay in a process. Usually, you use a delay to define when the next step in the process is to start. You can define a delay as either a point in time or a period of time.
    At runtime, the step waits until the specified point in time is reached or the specified period of time has passed. The system then continues the process by proceeding with the next step.
    Check here for knowing more about fork step... http://help.sap.com/saphelp_nw04/helpdata/en/24/e2283f2bbad036e10000000a114084/content.htm
    Reward points if this helps
    Regards
    Vani.

Maybe you are looking for