zoukankan      html  css  js  c++  java
  • Receiving Transaction Processor Conundrum

    what would we do if we are faced with a situation to execute a receiving transaction in oracle ebusiness suite from a BPEL process in Oracle Fusion Middleware?


    There are no public APIs provided as of this moment to execute the transactions. The only option is to use the receiving transaction processor. We would not want to invoke a concurrent program from a BPEL process and write wait & watch logic to check the outcome of the concurrent program. Could there be a better way? Let us dig deeper into how Oracle internally handles the receiving transactions.

    Within the ebusiness suite system, there are 3 modes with which receiving can be done: Online, Immediate, Batch.

    Immediate mode calls the receiving transaction processor as a concurrent request while the batch mode simply inserts the transactions into the receiving interface which could then be processed by a scheduled run of the receiving transaction processor.

    What is of interest to us is this online mode. The online mode invokes the receiving transaction processor as a synchronous call bypassing the concurrent request submission. It is this mode that we can use to our advantage in a BPEL process to pull off our heist.

    Synchronous calls can be done using fnd_transaction.synchronous API in the ebusiness suite system. The synchronous call to receiving transaction processor would be like this:

    l_retvalue := fnd_transaction.synchronous( 300, -- timeout in seconds
    l_outcome, -- out variable indicating Success/Warning/Error
    l_message, -- out variable with a descriptive message
    'PO',
    'RCVTPO',
    'ONLINE',
    l_group_id, -- group_id in rcv_transactions_interface
    l_organization_id, -- inventory organization_id,
    NULL, NULL, NULL, NULL, NULL,
    NULL, NULL, NULL, NULL, NULL, NULL,
    NULL, NULL, NULL, NULL, NULL, NULL);

    Please note that Oracle internally makes this call for Online receiving transactions using POR_RCV_ORD_SV.Call_Txn_Processor routine.

    There are a couple of things that we need to do before we make this synchronous call:

    • Set the apps context
    • Insert rows into receiving interface tables
    • Specify processing_mode_code in rcv_transactions_interface as 'ONLINE'


    To debug this routine, set the 'CONC_DEBUG' profile to 'TC' and watch for errors in the fnd_concurrent_debug_info table.

    All of this could be wrapped up into a nice custom utility and we would be good to go!

    Enjoy the serving!

  • 相关阅读:
    有关javamelody的配置
    jsp页面路径问题
    mavne问题解决---Dynamic Web Module 2.3 or newer
    centos配置数据源和java环境配置
    iBatis之Iterator的使用
    [转]Android MediaPlayer状态机
    [转]Android Activity的加载模式和onActivityResult方法之间的冲突
    ubuntu1304无法启动桌面系统的问题和解决
    java使用AES256解密
    [转]理解Linux的处理器负载均值
  • 原文地址:https://www.cnblogs.com/quanweiru/p/4084922.html
Copyright © 2011-2022 走看看