Dequeue Condition in BPEL

I want to place a Dequeue Condition on my AQ ProcessType = STANDARD
My payload is something like that:
<OutboundPaymentInstruction>
<PaymentInstructionInfo>
<InstructionReferenceNumber>190933</InstructionReferenceNumber>
<FormatProgramRequestID>65778700</FormatProgramRequestID>
<InstructionCreationDate>2012-01-31T14:28:39</InstructionCreationDate>
<MultiOrgAccessControl>
<HasBlockedData>N</HasBlockedData>
</MultiOrgAccessControl>
<InstructionStatus>
<Code>TRANSMITTED</Code>
<Meaning>Transmitted</Meaning>
</InstructionStatus>
<ProcessingType>ELECTRONIC</ProcessingType>
<ProcessType>STANDARD</ProcessType>
i am trying something like that :
DequeueCondition="tab.user_data.extract('/OutboundPaymentInstruction/PaymentInstructionInfo/ProcessType').getStringVal()='STANDARD'"
but it aint working :(
can someone help ?

i looked at a sample example and did a little modification :
<jca:operation
ActivationSpec="oracle.tip.adapter.aq.inbound.AQDequeueActivationSpec"
QueueName="ECX_OUTBOUND"
DatabaseSchema="APPLSYS"
ObjectFieldName="PAYLOAD"
DequeueCondition="tab.user_data.payload.extract(&apos;/OutboundPaymentInstruction/PaymentInstructionInfo/ProcessType&apos;,&apos;xmlns=&quot;&quot;&apos;).getStringVal()=&apos;STANDARD&apos;"
PayloadHeaderRequired="true"
OpaqueSchema="false" >
</jca:operation>
but this isnt working either

Similar Messages

  • Dequeue Condition for Message Payload

    Hi experts ,
    My requirement is that :I have 2 Composites in my Application which are going to listen same Aqueue but I want
    SubComposite1 to dequeue only message where "LocalName" is "Create" .
    SubComposite2 to dequeue only message where "LocalName" is "Update" .
    Example of message :
    <msg_out:FusionXFamilyEvent xmlns:msg_out="http://xmlns.oracle.com/apps/common/acr/events">
    <msg_out:Namespace>/entity/events/edl/OrganizationEO</msg_out:Namespace>
    <msg_out:LocalName>Create</msg_out:LocalName>
    <msg_out:Payload>
    </msg_out:Payload>
    </msg_out:FusionXFamilyEvent>
    In DequeueAdapter (AqAdapter),I have added this condition ,but its not working .
    <activation-spec className="oracle.tip.adapter.aq.inbound.AQDequeueActivationSpec">
    <property name="DequeueCondition" value="LocalName='Create'"/>
    <property name="Consumer" value="Sample"/>
    <property name="QueueName" value="ACR_XFAMILY_EVENT_Q"/>
    </activation-spec>
    please help me in this solution

    Hello,
    As you have discovered by default both dequeueing via a condition and dequeue via a correlation identifier have never honoured the sort order of the queue table.
    You can get it to honour the sort order by setting the following event at the session or system level or in the spfile/pfile as follows
    alter session set events '10866 trace name context forever, level 1';
    or
    alter system set events '10866 trace name context forever, level 1';
    or
    alter system set event='10866 trace name context forever, level 1' scope=spfile;
    Once this is set and a dequeue condition is being used an extra order by based on the sort columns of the queue table will be added to the sql which is executed internally.
    So this could have an impact on the dequeue performance when using a deq_condition or dequeueing via correlation id but ultimately you will have the ordering you require.
    Thanks
    Peter

  • Dequeue based on correlation ID and dequeue condition

    My version is :
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
    PL/SQL Release 10.2.0.3.0 - Production
    "CORE     10.2.0.3.0     Production"
    TNS for Linux: Version 10.2.0.3.0 - Production
    NLSRTL Version 10.2.0.3.0 - Production
    I am executing a Stored Procedure by specifying the dequeue condition and correlation ID.But I get ORA-25240.
    IN another thread Problem with ORA-25240 and msgId:=NULL I see that the problem was solved by specifying the correlation id in dequeue condition.
    I am trying to set it as follows : deqopt.deq_condition := 'CORRID = AAA'; but i get ORA-00904 error with this
    Can someone tell me how to do that?

    A_non
    I solved the issues as per ur advise.
    just hard coding.
    begin
    IF ai_flag='E' THEN
    dopt.deq_condition := 'xmltype.getRootelement(user_data)='''||'Confirmation'||'''';
    ELSif ai_flag='O' THEN
    dopt.deq_condition := 'xmltype.getRootelement(user_data)='''||'order'||'''';
    END IF;
    END;
    Now based on parameter corresponding Root element get dequeued.
    fine
    But... my techspec talks me more technical
    "The dequeue process must not be allowed to multi-thread because if we receive order/Business/Confirmation is quick succession we need them to be processing serially. There is a queue lock strategy to ensure single-threading."
    Hmm... This is to be more technical Give me ur advise
    S
    Message was edited by:
    AswinGousalya
    Message was edited by:
    AswinGousalya

  • Test Conditions in BPEL Fault Policy

    Per the ORacle 10.1.3.3 SOA Suite techical document, under the Fault Policy Framework section you can use an XPath expression in the <test> section of a fault policy. The example provided is +<test>$fault.code/code="WSDLReadingError"</test>+
    Instead of using an equals sign, I am trying to figure out the syntax to use a "contains" or "starts-with" expression. I want to filter out a particular remoteFault using the "summary".
    I have tried:
    +<Conditions>+
    +          <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">+
    +               <condition>+
    +*<test>contains($fault.summary/summary,"exception on JaxRpc")</test>*+      
    +<action ref="ora-retry"/>+
    +               </condition>+
    +          </faultName>+
    +     </Conditions>+
    +     <Actions>...+
    but this does not seem to work.
    Anyone know what "tests" are possible, and\or have used a "contains" expression in their Fault Policy?
    Thanks in advance,
    Eric
    Example of the fault that I am trying to "catch".
    +<remoteFault xmlns="http://schemas.oracle.com/bpel/extension">+
    +<part name="code">+
    +<code>ESBMessageProcessingFailed</code>+
    +</part><part name="summary"><summary>exception on JaxRpc invoke:+
    start fault message:
    +801 Error validating amount. Must be numerical and greater than 0 [000]+
    +:end fault message</summary>+
    +</part><part name="detail"><detail>null</detail>+
    +</part></remoteFault>+

    I did try to add namespace but it still didn't catch the fault.
    I contacted Oracle support and they indicated that the syntax is: $fault.part/<xpath expression>
    So for my purposes I needed to put: <test>$fault.summary/contains(summary, "xyz")</test>
    HOWEVER this did not work. We recontacted Oracle and this time they admitted there is a bug that they will document. Only = or != can be used at this time.
    Thanks for all who responded. I'm closing this question.
    For reference, here's a list of what I tried:
    The following did NOT catch my fault
    <test>$fault.summary/contains(summary, "JaxRpc invoke")</test>      
    <test>$fault.summary/contains(summary, 'start fault message:')</test>     
    <test>$fault.code/contains(code, "ProcessingFail")</test>           
    <test>$fault.code/contains(code, "ESBMessageProcessingFailed")</test>
    <test>$fault.code/contains(code/code, "ESBMessageProcessingFailed")</test>          
    <test>$fault.code/contains($fault.code, "ESBMessageProcessingFailed")</test>          
    <test>$fault.code/contains($fault.code/code, "ESBMessageProcessingFailed")</test>     
    <test>$fault.code/code/contains(code, "ESBMessageProcessingFailed")</test>          
    <test>$fault.code/code/contains($fault.code/code/, "ESBMessageProcessingFailed")</test>     
    <test>$fault.code/code/contains(code/code/, "ESBMessageProcessingFailed")</test>           
    <test>$fault.code/contains(/remoteFault/part[1]/code/, "ESBMessageProcessingFailed")</test>     
    <test>contains($fault.code/code,"ESB")</test>           
    <test>contains($fault.summary/summary,"ESB")</test>     
    <test>contains($fault.summary, "ESB")</test>          
    <test>contains($fault.summary/summary, &#xD;)</test>           
    <test>xp20:matches($fault.summary/summary,'.*fault message.*')</test>      
    <test>xp20:matches($fault.summary/summary,'*fault message*')</test>     
    <test>not(xp20:matches($fault.summary/summary,'.*xyz.*'))</test>          
    <test>true()</test>

  • Race Condition in BPEL ?

    Experts,
    Please share your thoughts on RACE CONDITON in BPEL taking some scenario.
    I am looking for a scenario in a SOA composite like,
    1) when this condition arises ?
    2) whats needs to be done as a recovery ?
    3) what should be kept in mind while designing soa composite to avoid this err.... ?
    Thanks :)

    Could you explain the technical example your talking about or give some real time example.
    - Umesh

  • How to rollback AQ dequeue operations in BPEL

    Hi,
    For a service i initially started using an Oracle AQ Adapter for dequeueing messages from an Oracle AQ. This works fine, only when processing of the message fails, i have to rollback the dequeue operation. Although that Oracle AQ Adapters do support XA, it do not see a way (documented in oracle docs, google etc) to force the rollback of that dequeue operation. Is it possible to rollback a dequeue operation using the oracle AQ Adapter?
    Secondly i tried it using an JMS Adapter. Herefore i created within a existing JMS Module a foreign server (WNSForeignServer) with
    - JNDI Initial Context Factor; oracle.jms.AQjmsInitialContextFactory
    - JNDI Properties: datasource=jdbc/CDB
    I created a new connection factory in WNSForeignServer: WNS_BERICHT_CF with
    - Local JNDI Name: aqjms/XAQueueConnectionFactory
    - Remote JNDI Name: XAQueueConnectionFactory
    I created a new destination in WNSForeignServer: wns_bericht_q with
    - Local JNDI Name: jms/aq/wns_bericht_q
    - Remote JNDI Name: Queues/WNS_BERICHT_Q
    Restarted the managed server
    WNS_BERICHT_Q is an existing queue which is also used by the configured (and working) AQ Adapter.
    In my composite i added a JMS Adapter using Oracle Advanced Queueing as JMS Provider and Consume Message as operation Type.
    The Destination Name is jms/aq/wns_bericht_q (visible when using the browse option)
    When putting messages on the queue the message is retrieved when using the Oracle AQ Adapter, but ik keep failing retrieving the messages using th JMS adapter.
    Any help/ideas is appreciated ! (in other words; HELP! ;-) )
    Cheers,
    Peter

    Hi Peter,
    There are long discussions on this topic on the following threads...
    Re: Message not deleting from Topic after successfully dequeue
    Re: SOA Composite dequeue not removing message from the queue.
    Hope this helps...
    Cheers,
    Vlad

  • Dequeue (using a AQ Adapter) based on a "Variable" condition

    Hi,
    I use an AQ Adapter to dequeue messages from an AQ and send it to an BPEL process. I have setup the adapter for conditional dequeuing as follows:
    My message object has a field called "title" so in my adapter i use the Dequeue condition as below and it works perfectly:
    <jca:operation
    ActivationSpec="oracle.tip.adapter.aq.inbound.AQDequeueActivationSpec"
    QueueName="DETPAYLOAD_QUEUE"
    DatabaseSchema="APPS"
    DequeueCondition="tab.user_data.title='Test Case'"
    OpaqueSchema="false" >
    </jca:operation>
    My question is : Is it possible to configure the adapter based on a Variable in the BPEL process?
    For example: Can i use the DequeueCondition as : DequeueCondition="tab.user_data.title=Process_Variable" (where Process_Variable is a BPEL process variable that has been populated in the previous activity)
    I have tried some of the below ways to get this working but have not been successful so far. Has anyone tried this before?
    - DequeueCondition="tab.user_data.title=(String)getVariableData("Process_Variable")"
    - DequeueCondition="tab.user_data.title=:Process_Variable"
    - DequeueCondition="tab.user_data.title=@Process_Variable"
    Thanks,
    Amol

    That's the way.

  • BPEL Archive directory {0} not found

    Hello,
    I have created deploy.xml,to deploy bpel processes on SOA server which is on unix based machine.
    xml is like
    <?xml version="1.0" encoding="windows-1252" ?>
    - <project default="Install" xmlns:oracle="antlib:oracle" basedir=".">
    <property name="process.dir" value="${basedir}" />
    <property name="package.dir" value="${basedir}/Package" />
    <echo>$(basedir) $(process.dir) $(package.dir)</echo>
    - <!-- Accounts Payable WorkFlow Version
    -->
    <property name="FlowVersion" value="1.0" />
    <property environment="env" />
    - <!-- First override from build.properties in process.dir, if available
    -->
    - <!-- Set bpel.home from developer prompt's environment variable BPEL_HOME
    -->
    - <condition property="bpel.home" value="${env.BPEL_HOME}">
    <available file="${env.BPEL_HOME}/utilities/ant-orabpel.xml" />
    </condition>
    <xmlproperty file="${process.dir}/bpel/bpel.xml" />
    <property name="process.name" value="${BPELSuitcase.BPELProcess(id)}" />
    - <!-- If bpel.home is not yet using env.BPEL_HOME, set it for JDev
    -->
    - <!--      <property name"bpel.home" value="/apps/soa/product/10.1.3.1/OracleAS_1/bpel">
    -->
    <property name="bpel.home" value="C:/product/10.1.3.1/OracleAS_1/bpel" />
    <property name="bpel.home" value="${oracle.home}/integration/bpel" />
    <property file="${bpel.home}/utilities/ant-orabpel.properties" />
    <property name="bpel.home" value="${bpel.home}" />
    - <!-- import custom ant tasks for the BPEL PM
    -->
    <import file="${bpel.home}/utilities/ant-orabpel.xml" />
    - <!-- Use deployment related default properties
    -->
    - <!--
    This Task is Used to Unjar the jar file & replace the Token value,but needs to identify
    required or not. & if required from where it is get called.
    -->
    - <!-- Define the deployer URL
    -->
    <echo>Deployer URI : deployer:oc4j:opmn://${j2ee.hostname}:${opmn.requestport}/${oc4jinstancename}</echo>
    <property name="deployer.url" value="deployer:oc4j:opmn://${j2ee.hostname}:${opmn.requestport}/${oc4jinstancename}" />
    <echo>------------------------------------------------------------------- | ${env.BPEL_HOME} | Deploying to Server deployer:oc4j:opmn://${j2ee.hostname}/${oc4jinstancename} -------------------------------------------------------------------</echo>
    <property name="process" value="process1" />
    - <target name="FixURLLocations">
    <echo>------------------------------------------------------------------- | Updating Web Service Location Information | JAR file to update: ${p.jarfile} | Web Service Location base: http://${http.hostname}:${http.port} -------------------------------------------------------------------</echo>
    <delete dir="${package.dir}/temp" verbose="no" quiet="yes" failonerror="no" />
    <mkdir dir="${package.dir}/temp" />
    <mkdir dir="${package.dir}/Save" />
    <copy file="${p.jarfile}" todir="${package.dir}/Save" />
    <unjar src="${p.jarfile}" dest="${package.dir}/temp" overwrite="yes" />
    <!-- Code to replace some hardcoded values -->
    <delete file="${p.jarfile}" verbose="no" quiet="yes" failonerror="no" />
    <jar destfile="${p.jarfile}" basedir="${package.dir}/temp" update="yes" />
    <delete dir="${package.dir}/temp" verbose="no" quiet="yes" failonerror="no" />
    </target>
    <target name="Test">
    <echo>---------------------------------------------------------------- | Deploying process GWT_SP_L1WipBPELProcess ----------------------------------------------------------------</echo>
    <antcall target="FixURLLocations">
    <param name="p.jarfile" value="${package.dir}/Test.jar" />
    </antcall>
    <deployProcess user="${admin.user}" password="${admin.password}" domain="${domain}" process="${process.name}" rev="${rev}" dir="${package.dir}/output" hostname="${http.hostname}" httpport="${http.port}" verbose="${verbose}" isSSL="${isSSL}" trustStore="${trustStore}" trustPassword="${trustPassword}" />
    </target>
    <target name="Install" depends="bpel, apps_webservice">
    <tstamp />
    <echo>--------------------------------------------------------- | Deployed all process ---------------------------------------------------------</echo>
    </target>
    <target name="apps_webservice" depends="Test">
    <tstamp />
    <echo>--------------------------------------------------------- | Webserivces and application Installation completed directory "{0}" ---------------------------------------------------------</echo>
    </target>
    <target name="bpel" depends="">
    <tstamp />
    <echo>--------------------------------------------------------- | BPEL Process Installation completed ---------------------------------------------------------</echo>
    </target>
    </project>
    but when I try to run this xml using Ant It,unjar file files replaces code ,make jar again and on deploying it gives following error
    BPEL Archive directory {0} not found.
    Could you please tell me why this error is coming and how i can resolve it?

    Hello,
    Could any one help regarding this.
    Please suggest why d<deployprocess> is failing and giving BPEL Archive directory {0} not found.
    Could
    <copy file="${p.jarfile}" todir="C:\product\10.1.3.1\OracleAS_1\bpel\domains\default\deploy" />
    replace <deployprocess>
    Thanks & Regards,
    Jignya

  • Bpel deployment fails for all processes that have revision other than 1.0.

    Using: Release *10.1.3.3.1*
    Hello All,
    Bpel deployment fails for all processes that have revision other than *1.0*.
    We have been attempting to deploy several BPEL projects via ANT script to a target environment and are encountering failures to deploy for every project which isn’t a (revision 1.0). We are getting the following error whenever we try to deploy a process with a revision other than 1.0:
    D:\TJ_AutoDeploy\BPEL_AutoDeploy_BETA\build.xml:65: BPEL archive doesnt exist in directory "{0}"
         at com.collaxa.cube.ant.taskdefs.DeployRemote.getJarFile(DeployRemote.java:254)
         at com.collaxa.cube.ant.taskdefs.DeployRemote.deployProcess(DeployRemote.java:409)
         at com.collaxa.cube.ant.taskdefs.DeployRemote.execute(DeployRemote.java:211)
         at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
         at org.apache.tools.ant.Task.perform(Task.java:364)
         at org.apache.tools.ant.Target.execute(Target.java:341)
         at org.apache.tools.ant.Target.performTasks(Target.java:369)
         at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
         at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
         at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
         at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
         at org.apache.tools.ant.Main.runBuild(Main.java:668)
         at org.apache.tools.ant.Main.startAnt(Main.java:187)
         at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
         at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
    The structure of our automated deployment script is as follows:
    First, a batch script calls (Jdeveloper_BPEL_Prompt.bat) in order to set all necessary environment variables i.e. ORACLE_HOME, BPEL_HOME, ANT_HOME, etc for ant.
    Next, the script lists every .jar file within the directory to an .ini file called BPEL_List.ini. Furthermore, BPEL_DIR, ADMIN_USER and ADMIN_PSWD variables are set and initialized respectively to:
    -     “.” – point to directory where script is running from because all the BPEL processes are located here
    -     “oc4jadmin”
    -     “*********” (whatever the password for out environment is)
    We’ve developed a method to have the script prompt the user to select the target environment to deploy to. Once the user selects the appropriate environment, the script goes through the BPEL_List.ini files and a loop tells it that for every BPEL process listed:
    DO ant
    -Dprocess.name=%%b
    -Drev= !Rev!
    -Dpath=%BPEL_DIR%
    -Ddomain=default
    -Dadmin.user=%ADMIN_USER%
    -Dadmin.password=%ADMIN_PWD%
    -Dhttp.hostname=%HOST%
    -Dhttp.port=%PORT%
    -Dverbose=true
    (What’s happening is that the variables in the batch file are being passed on to the ANT script where *%%b* is the process name, !rev! is revision #, and so on…)
    The loop goes through each line in the BPEL_List.ini and tokenizes the BPEL process into 3 parts *(%%a, %%b, and %%c)* but we only extract 2 parts: *%%b* (process name) and *%%c* which becomes !Rev! (revision number).
    Example:
    Sample BPEL process:
    bpel_ThisIsProcess1_1.0.jar
    bpel_ThisIsProcess2_SOAv2.19.0.001B.jar
    After tokenizing:
    %%a     %%b     %%c
    bpel     ThisIsProcess1     1.0.jar
    bpel     ThisIsProcess2     SOAv2.19.0.001B.jar
    *!Rev!* and not *%%c* because *%%c* will return whatever the revision number is + the “.jar” file extension as illustrated above. So to circumvent this, we parse *%%c* so that the last 4 characters are stripped. Such is done like this:
    set RevN=%%c
    set RevN=!RevN:~0,-4!
    Hence, the usage of !Rev!.
    Below is a screenshot post of the ANT build.xml that goes with our script:
    <!--<?xml version="1.0"?>-->
    <!--BUILD.XML-->
    <project name="bpel.deploy" default="deployProcess" basedir=".">
         <!--
         This ant build file was generated by JDev to deploy the BPEL process.
         DONOT EDIT THIS JDEV GENERATED FILE. Any customization should be done
         in default target in user created pre-build.xml or post-build.xml
         -->
         <property name="process.dir" value="${basedir}" />
              <!-- Set BPEL process name -->
              <!--
              <xmlproperty file="${process.dir}/bpel/bpel.xml"/>
              <property name="process.name" value="${BPELSuitcase.BPELProcess(id)}"/>
              <property name="rev" value="${BPELSuitcase(rev)}"/>
              -->
         <property environment="env"/>
         <!-- Set bpel.home from developer prompt's environment variable BPEL_HOME -->
              <condition property="bpel.home" value="${env.BPEL_HOME}">
                   <available file="${env.BPEL_HOME}/utilities/ant-orabpel.xml" />
              </condition>
         <!-- show that both bpel and oracle.home are located (TESTING purposes ONLY) -->
         <!-- <echo>HERE:${env.BPEL_HOME} ${env.ORACLE_HOME}</echo> -->
         <!-- END TESTING -->
         <!--If bpel.home is not yet using env.BPEL_HOME, set it for JDev -->
         <property name="oracle.home" value="${env.ORACLE_HOME}" />
         <property name="bpel.home" value="${oracle.home}/bpel" />
         <!--First override from build.properties in process.dir, if available-->
         <property file="${process.dir}/build.properties"/>
         <!--import custom ant tasks for the BPEL PM-->
         <import file="${bpel.home}/utilities/ant-orabpel.xml" />
         <!--Use deployment related default properties-->
         <property file="${bpel.home}/utilities/ant-orabpel.properties" />
         <!-- *************************************************************************************** -->
         <target name="deployProcess">
              <tstamp>
                   <format property="timestamp" pattern="MM-dd-yyyy HH:mm:ss" />
              </tstamp>
              <!-- WRITE TO LOG FILE #tjas -->
              <record name="build_verbose.log" loglevel="verbose" append="true" />
              <record name="build_debug.log" loglevel="debug" append="true" />
              <echo></echo>
              <echo>####################################################################</echo>
              <echo>BPEL_AutoDeploy initiated @ ${timestamp}</echo>
              <echo>--------------------------------------------------------------------</echo>
              <echo>Deploying ${process.name} on ${http.hostname} port ${http.port} </echo>
              <echo>--------------------------------------------------------------------</echo>
              <deployProcess
                   user="${admin.user}"
                   password="${admin.password}"
                   domain="${domain}"
                   process="${process.name}"
                   rev="${rev}"
                   dir="${process.dir}/${path}"
                   hostname="${http.hostname}"
                   httpport="${http.port}"
                   verbose="${verbose}" />
              <sleep seconds="30" />
              <!--<echo message="${process.name} deployment logged to ${build_verbose.log}"/>
              <echo message="${process.name} deployment logged to ${build.log}"/> -->
         </target>
         <!-- *************************************************************************************** -->
    </project>
    SUMMARY OF ISSUE AT HAND:
    ~ Every bpel process w/ 1.0 revision deploys with no problems
    ~ At first I would get an invalid character error most likely due to the “!” preceding “Rev”, but then I decided to set rev=”false” in the build.xml file. That didn’t work quite well. In another attempt, I decided to leave the –Drev= attribute within the batch script blank. That still led to 1.0s going through. My next thought was deploying something other than a 1.0, such as 1.2 or 2.0 and that’s when I realized that if it wasn’t a 1.0, it refused to go through.
    QUESTIONS:
    1.     IS THERE A WAY TO HAVE ANT LOOK INTO THE BPEL PROCESS AND PULL THE REVISION ID?
    2.     WHAT ARE WE DOING WRONG? ARE WE MISSING ANYTHING?
    3.     DID WE GO TOO FAR? MEANING, IS THERE A MUCH EASIER WAY WE OVERLOOKED/FORGOT/OR DON’T KNOW ABOUT THAT EXISTS?
    Edited by: 793292 on Jul 28, 2011 12:38 PM

    Only thing i can think of is instead of using a MAC ACL , u cud jus use the default class
    Policy Map Test
    class class-default
    police 56000 8000 exceed-action drop
    Class Map match-any class-default (id 0)
    Match any
    You would be saving a MAC-ACL ;-).

  • BPEL-B2B patch for SOA 10.1.3.4

    Hi all,
    Can anyone tell me which patch should be applied to enable BPEL-B2B integration in SOA suite 10.1.3.4(latest)
    And also can anyone tell me how to apply the patch

    Hello,
    You can integrate BPEL (10.1.3.x) with B2B (10.1.2.0.2 - any patch) by using the AQ adapter in BPEL. You can create a BPEL process that uses two AQ adapters (one for dequeuing the message from B2B, one for enqueing the message into B2B). If a message has been received by B2B, use the AQ adapter dequeue operation from BPEL to pull the message out and do whatever you need to do with it. When you need to submit that message back into B2B for out processing you create an AQ adapter enqueue operation in BPEL.
    More detailed instructions on the integration of BPEL and B2B are located here:
    http://www.oracle.com/technology/products/integration/b2b/pdf/B2B_TN_022_Enabling_B2B_BPEL_Interop.pdf
    Thanks,
    Ahmad

  • Transaction timeout in BPEL for webservice invocation

    [ERROR] [] [oracle.soa.bpel.engine.dispatch] [tid: orabpel.invoke.pool-4.thread-3] [userId: <anonymous>] [ecid: e8538d226bae7c2a:1914e8c0:148c67a5f26:-8000-00000000000031a2,1:27459] [APP: soa-infra] failed to handle message[[
    weblogic.transaction.internal.TimedOutException: Transaction timed out after 299 seconds
    BEA1-166C02569896A59BE380
                    at weblogic.transaction.internal.ServerTransactionImpl.wakeUp(ServerTransactionImpl.java:1788)
                    at weblogic.transaction.internal.ServerTransactionManagerImpl.processTimedOutTransactions(ServerTransactionManagerImpl.java:1676)
                    at weblogic.transaction.internal.TransactionManagerImpl.wakeUp(TransactionManagerImpl.java:1988)
                    at weblogic.transaction.internal.ServerTransactionManagerImpl.wakeUp(ServerTransactionManagerImpl.java:1586)
                    at weblogic.transaction.internal.WLSTimer.timerExpired(WLSTimer.java:35)
                    at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
                    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
                    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
                    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
    Message handle error.
    error while attempting to process the message "com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessage"; the reported exception is: Transaction Rolledback.: weblogic.transaction.internal.TimedOutException: Transaction timed out after 299 seconds
    BEA1-166C02569896A59BE380
    This is happening when invoking a webservices from BPEL and if it takes more than 5 minutes we are getting above Error
    we have tried out SyncMaxWaitTime Property in BPEL configurations through SOA administration menu of EM. Also tried by increasing JTA timeout seconds in Service--JTA @ weblogic console.
    Any suggestion or pointers..

    Hi,
    Could help set the following...
    The timeouts should be configured based on the below condition
    SyncMaxWaitTime < BPEL EJB's transaction timeout < Global Transaction Timeout
    The values could be: SyncMaxWaitTime (3600) ; BPEL EJB's transaction timeout (3600); Global Transaction Timeout JTA (7200)
    Setting the SyncMaxWaitTime :
    This is the maximum time a synchronous BPEL process waits before it times out to get the response from another BPEL or a web service
    Login to EM console
    Expand SOA and right click on "soa-infra"
    From context menu, select SOA Administration –> BPEL properties
    Click on "More BPEL Configuration properties"
    Enter the appropriate value for the SyncMaxWaitTime
    Setting the global transaction timeout at Weblogic Domain Level:
    This property controls the transaction timeout seconds for active transactions. If the transaction is still in the "active" state after this time, it is automatically rolled back. 
    Log into Oracle Weblogic Administration Console.
    Click Services -> JTA.
    Change the value of Timeout Seconds to the required value (the default is 30)
    Click Save.
    Restart Oracle Weblogic Server.
    Overriding the transaction timeout setting for BPEL EJB's:
    The timeout properties for the EJB's control the particular timeout setting for the SOA application, overriding the global setting specified by the JTA timeout 
    Log into Oracle Weblogic Administration Console.
    Click Deployments.
    Expand soa-infra -> EJBs.
    Click on the configuration tab for the timeout setting for each of EJB’s listed below and the change the time out values as required.
    Following EJBs need to be updated:
    BPELActivityManagerBean  
    BPELDeliveryBean
    BPELDispatcherBean
    BPELEngineBean
    BPELFinderBean
    BPELInstanceManagerBean
    BPELProcessManagerBean
    BPELSensorValuesBean
    BPELServerManagerBean
    Click Save.
    Restart Oracle Weblogic Server.
    I hope you find it useful!
    hugs!

  • Selective dequeue of messages unrelated to those already in a transaction.

    Hello
    In an AQ queue, I need to ensure that messages which are related to each other are processed sequentially.
    For example, assume the queue is seeded with the four messages that have a business-related field called transaction reference (txn_ref) and two of the messages (1,3) belong to the same transaction (000001):
    id | txn_ref |
    1 | 000001 |
    2 | 000002 |
    3 | 000001 |
    4 | 000003 |
    Assume also that I am running 4 threads/processes that wish to dequeue from this queue. The following should occur:
    1. thread 1 dequeues message #1
    2. thread 2 dequeues message #2
    3. thread 3 dequeues message #4 (because message #3 is related to #1 and #1 has not yet completed).
    4. thread 4 blocks waiting for a message
    5. thread 1 commits its work for message #1
    6. thread 4 (or perhaps thread 1) dequeues message #3.
    My initial thought was that I could achieve this with a dequeue condition where the ENQ_TIME (enqueue time) is not later than any other ENQ_TIME of all the messages that have the same TXN_REF. But my problem is how to reference the TXN_REF of a message that I have not yet selected, in order to select it. e.g.
    // Java API
    String condition = "ENQ_TIME = (select min(ENQ_TIME) from AQ_TABLE1 where ??"; // where what?
    dequeueOption.setCondition(condition);
    Is it possible to achieve what I want here?
    Edited by: user8264946 on Oct 19, 2010 9:03 PM
    Edited by: user8264946 on Oct 19, 2010 9:04 PM

    It depends on how acceptable it is for your commit to fail. By far the easiest and safest thing to do is use Optimistic Locking. This way if the server tries to commit changes to something that has already been committed, an Optmistic Lock exception will be thrown. It's up to your application to handle this, and depending on your domain and the likelyhood of this happeneing, you could just tell the user "try again". The other option is pessemistic locking, which is very, very, dangerous (in my opinion). The main issue is that it's resource intensive, and different databases have different semantics on how it works.
    IIWY, I'd look at Optimistic Locking in the docs and go from there.
    - Don

  • Tow fact assersion problem with BPEL and rule Engine

    I have imported two different xsd for buliding xml fact A and B. I have defined two RuleSetA and RuleSetB that RuleSetA only act on A and RuleSetB only act on B.
    When i call RuleSetA from BPEL decision Service it detects both of the facts A and B as a related fact to RuleSetA and expect that I use both of them for assertion and watch!!
    When this condition occure BPEL can not create ear file for that DecisionService!!
    I have set visible property of fact B to false in ruleAuthor and then Bpel detects only fact A in decisionService creation wizard. I have deployed BPEL but when i run it the DecisionService raise this error "undefined mypackage.B at line and coumn ..."
    It means that Rule engine expects that I should assert fact B too!! but it's irelevent.
    I have checked Decision Service deplyment descriptor files such as decisionservic.desc
    I can not find any name or setting for fact B in assertionlist setting.
    Please Help me what is the problem

    Hi,
    I'm not sure i understand what you're trying to achieve, but let me explain some of the rule engine and decision service concepts.
    The Oracle Rule Engine has the concept of a rule repository (that is what decision service considers a rule engine connection). A rule repository is a container of rule dictionaries (in the decision service world we use the term catalog for this).
    It is the rule dictionary you're selecting when creating a decision service partnerlink.
    So now a rule dictionary comprises of
    - A (common) datamodel.
    The datamodel comprises of the variables, fact types, functions
    - One or more rulesets
    All of the rulesets share the same datamodel of the rule dictionary, there doesn't exist
    a fact type model for a specific ruleset.
    Now, when you create a decision service partnerlink, we let you choose the ruleset
    that is being executed as part of the decision service. Then we query the rule dictionary
    data model for all the fact types that can potentially be used for executing the ruleset
    and assume that you have some knowledge about which fact types to assert and which
    one to query (watch).
    The thing is that the decision service partnerlink wizard doesn't have knowledge that
    your ruleset B uses fact type B and your ruleset A uses fact type A since both fact type
    A and B are part of the datamodel of the rule dictionary. So, when you choose to execute ruleset B, its in your responsibility to select appropriate fact types for assertion
    and query/watch (in this case you would choose fact type B for assertion, eventually the same or some other fact type for watch).
    Best Regards,
    Ralf

  • EPC to BPEL Transformation - XOR-split

    Hi all,
    I am trying to transform EPC to BPEL. The process contains XOR-split activity followed by 3 events. I expect to have a switch activity followed by 3 branches for each condition in BPEL. However, I only got a switch activity and "default" branch.
    Has anyone encountered similar problem before?
    Thanks.
    cheers,
    Cipto

    Hello shirishsharma,
    Thank you for your reply and interest. I'm sorry I could not reply sooner myself.
    You are right that in this diagram, the AND-operator is not needed. However, this diagram serves as an example, which I tried to make as simple as possible. Perhaps too simple. It should show the case, where something happens in parallel with a loop doing something else. Adding an event and function on the parallel line would illustrate this better, but seemed more complex than necessary to me. However, it may be that to illustrate the full extent of this "glitch", functions and events should also be added between the AND-operators and the XOR-operators, above and below the loop.
    Another "glitch", which I ran into, has to with the combination of a loop and multiple start events. Multiple start events seem to be transformed quite well. However, when adding loops (and perhaps other structures) to the branches, strange things occur. Often resulting in just a single branch being transformed to BPEL. I have been unable to pinpoint the exact occurrence of this. The length of a branch even seems to have something to do with it.
    The example below illustrates this. It has two branches, a long one and one with a loop. In the current form it seems to transform successfully: The BPEL shows a flow containing the two branches, including the loop in one of them. However, when the long branch is shortened (remove the top events and functions), the resulting BPEL code no longer contains the flow and the second branch.
    I'm still very interested in explanations and possibly workarounds.
    Thanks for you attention,
    Meertens
    http://wwwhome.cs.utwente.nl/~meertens/oracle/bpasuite/multistart_branchlength.png
    !http://wwwhome.cs.utwente.nl/~meertens/oracle/bpasuite/multistart_branchlength.png!

  • Message from the IP_IN_QUEUE is automatically dequed

    Hi all,
    There are 2 messages in the IP_IN_QUEUE. I tried to dequeue it from BPEL using the AQ Adapter, but it is not dequeing. One of the reason could be the Payload structure of the existing messages in the IP_IN_QUEUE is different from the Payload structure of the schema imported in the BPEL Designer.
    So I thought of Enqueue a new message into the IP_IN_QUEUE and then thought of dequeue with the same message structure from BPEL thru AQ Adapter.
    I am able to enqueue a new message. I can able to see a new record inserted into the table IP_QTAB for the queue IP_IN_QUEUE, corresponding to this new enqueue message. But after some times, this message is automatically dequeued from IP_IN_QUEUE(i.e the corresponding row is automatically removed IP_QTAB)
    Can any one tell me how the message can be automatically dequeued from IP_IN_QUEUE. Also suggest if there are any way to find what are all the messages dequeued from IP_IN_QUEUE and what process dequeues them.
    Any help is highly appreciated.

    Hi,
    There are no automatic processes that dequeue messages from the IP_IN_QUEUE. When you dequeue a message from the IP_IN_QUEUE, you must make sure that the consumer name matches. The default consumer name is b2buser when B2B Server enqueues to the IP_IN_QUEUE. However, the default can be overrided by the Document Routing ID in the Document Definition Parameters page. If you are enqueuing from BPEL, you may have selected something totally different. I do not know of ways to track how the message is dequeued. You may want to post that question to the Oracle AQ forum.
    One suggestion is setup the tutorial so that you have the end to end scenario working. You can use the deq.bat or deq.sh in the $ORACLE_HOME/ip/tutorial/X12/runtime directory (for example, if you use the X12 tutorial) to dequeue messages from IP_IN_QUEUE. The default consumer name b2buser is assumed. After you are able to do that, then you want to try dequeueing using BPEL.
    Eng

Maybe you are looking for