1. 程式人生 > >FNDWRR.exe後面的temp_id是如何生成的--解析Oracle EBS request log/output的url

FNDWRR.exe後面的temp_id是如何生成的--解析Oracle EBS request log/output的url

我們在EBS的view concurrent request 介面裡, 通常會點選log或output, 然後在選單裡選copy file,從IE裡來獲取相應的log或output檔案. 相應的url是
http://host:port/OA_CGI/FNDWRR.exe?temp_id=2391709&login=APPLSYSPUT/[email protected] 
這個url是如何生成的呢? 通過檢視FNDRSRUN這個form, 查到相關的兩個package是fnd_webfile.get_url和fnd_concurrent_file.get_file_id
以下是fnd_webfile.get_url的引數說明
/* Function: GET_URL
 *
 * Purpose: Constructs and returns the URL for a Concurrent Processing
 *          log or output file.
 *
 * Arguments:
 *  file_type - Specifies the type of file desired:
 *       fnd_webfile.process_log = The log of the concurrent process identified
 *                                 by the parameter ID.
 *       fnd_webfile.icm_log     = The log of the ICM process identified by ID.
 *                                 Or, the log of the ICM process that spawned
 *                                 the concurrent process identified by ID.
 *                                 Or, the log of the most recent ICM process
 *                                 if ID is null.
 *       fnd_webfile.request_log = The log of the request identified by ID.
 *       fnd_webfile.request_out = The output of the request identified by ID.
 *       fnd_webfile.request_mgr = The log of the concurrent process that ran
 *                                 the request identified by ID.
 *       fnd_webfile.frd_log     = The log of the forms process identified
 *                                 by ID.
 *       fnd_webfile.generic_log = The log file identified by ID.
 *       fnd_webfile.generic_trc = The trace file identified by ID.
 *       fnd_webfile.generic_ora = The ora file identified by ID.
 *       fnd_webfile.generic_cfg = The config file identified by ID.
 *       fnd_webfile.context_file= The context file identified by ID.
 *       fnd_webfile.generic_text= Generic file using text transfer mode.
 *       fnd_webfile.generic_binary = Generic file using binary transfer mode.
 *
 *  id        - A concurrent process ID, concurrent request ID, or file ID
 *                 depending on the file type specified.
 *              For fnd_webfile.context_file,fnd_webfile.generic_text,
 *              fnd_webfile.generic_binary this value is null.
 *
 *  gwyuid    - The value of the environment variable GWYUID used in
 *                 constructing the URL.
 *
 *  two_task  - The database two_task, used in constructing the URL.
 *
 *  expire_time - The number of minutes for which this URL will remain
 *                   valid.
 *  source_file - Source file name with full patch
 *
 *  source_node - Source node name.
 *
 *  dest_file   - Destination file name
 *
 *  dest_node   - Destination node name
 *
 *  Returns NULL on error.  Check the FND message stack.

在這個get_url中, 如果檔案是request_log或request_out型別的, 它會呼叫fnd_concurrent_file.get_file_id, 以下是原始碼
function get_file_id return varchar2
is
fuid number;
fcrc number;
frand number;
fid number;
rval varchar2(32);
rtemp  varchar2(32);
begin

 select fnd_s_file_temp_id.nextval
  into fuid
  from dual;

 -- Get a random number
 fnd_random_pkg.init(7);
 fnd_random_pkg.seed(to_number(to_char(sysdate, 'JSSSSS')), 10, false);
 frand := fnd_random_pkg.get_next;

 -- Compute CRC32 of the random number and the sequence number,
 -- this creates a self-checking value.
 rval := lpad(to_char(frand),10,'0')||lpad(to_char(fuid),10,'0');
 fcrc := fnd_hash_pkg.crc32(rval);

 -- XOR the sequence and random values with whatever we have
 -- lying around.  This make our algorithm more obscure,
 -- since sequence values and pseudorandom numbers are no longer
 -- obvious to an observer.
 fuid := fnd_hash_pkg.xor32(fuid, frand);
 frand := fnd_hash_pkg.xor32(fcrc, frand);

 -- this value will be unique
 fid := fcrc * power(2,64) + frand * power(2,32) + fuid;

 -- base 64
 rval := fnd_code_pkg.base64(fid, 16);
 rtemp := rval;

 -- and finally encrypt it all with RC4...actually we now use CRC Hash
-- rval := fnd_crypt_pkg.encrypt('4237533241', rval, 16);
        rval := to_char(icx_call.CRCHASH('4237533241',rval));
 return rval;

end get_file_id;

其中可見oracle幾個有趣的package, 如:
fnd_crypt_pkg
fnd_code_pkg
fnd_random_pkg
fnd_hash_pkg
icx_call
有空再研究一下這幾個package.

相關推薦

FNDWRR.exe後面的temp_id是如何生成的--解析Oracle EBS request log/output的url

我們在EBS的view concurrent request 介面裡, 通常會點選log或output, 然後在選單裡選copy file,從IE裡來獲取相應的log或output檔案. 相應的url是http://host:port/OA_CGI/FNDWRR.exe?te

解析oracle的rownum

char 查詢 由於 可能 學生表 問題 進一步 但是 oracl 本人最近在使用oracle的rownum實現分頁顯示的時候,對rownum做了進一步的分析和研究。現歸納如下,希望能給大家帶來收獲。  對於rownum來說它是oracle系統順序分配為從查詢返回的行的編號

Oracle EBS登錄頁面顯示空白

color mes media 3.5 ply javax queue 1.3 shu 問題描述   由於ebs數據庫需要閃回,在其他同事閃回數據庫到之前某一天後,重啟ebs應用,發現ebs客戶端登錄顯示空白 以前也出現過類似問題,一般出現此問題,可以嘗試以下操作: 1.重

一個簡單的 JSON 生成/解析

article 例程 讀寫 文件的 簡單 read 沒有 project -c 這是一個單文件的,適用於C語言的, JSON 讀寫庫。 先說明,不想造輪子,代碼是從這裏拿來的: https://www.codeproject.com/Articles/887604/jW

安卓開發中使用ZXing生成解析二維碼

roi contents arc bar white png 解析 tex span 編碼示例 package com.wolf_pan.qrcodesample; import android.graphics.Bitmap; import android.graph

Java使用ZXing生成/解析二維碼圖片

圖片 agen 出圖 put align bar 範圍 pub get ZXing是一種開源的多格式1D/2D條形碼圖像處理庫,在Java中的實現。重點是在手機上使用內置攝像頭來掃描和解碼設備上的條碼,而不與服務器通信。然而,該項目也可以用於對桌面和服務器上的條形碼進行

Oracle ebs“發運方法”配置

技術分享 服務 mode 擴展 ans com str http .com 一、WSH_MODE_OF_TRANSPORT運輸方式的設置 10_OM_訂單管理超級用戶>設置>發運>代碼 在ebs 12.1.3,WSH_MODE_OF_TRANSPORT的訪

iOS開發- 生成/解析 vcf檔案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

How to stop start Oracle EBS Server DB Server Apps Server

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Firefox can not launch Oracle EBS Form

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

How to use script to get all oracle EBS Form name and corres

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Metalink Note 中文文件列表 - Oracle EBS Enterprise Business Suite

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Oracle EBS R12 WIP Component Issue Return Process

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Mybatis,DataSource生成解析

1.Configuration初始化,載入JNDI,POOLED,UNPOOLED的工廠類,並載入到TypeAliasRegistry的Map<String, Class<?>> TYPE_ALIASES = new HashMap<>()中: 圖1.

Oracle EBS PO退貨失敗

無法讀取例程 &ROUTINE 中配置檔案選項 INV_DEBUG_TRACE 的值。     系統-配置檔案-地點層 INC%除錯%蹤 是    select *  from po_interfac

Oracle EBS PO採購訂單更新

DECLARE l_result NUMBER; l_progress NUMBER; l_errors PO_API_ERRORS_REC_TYPE; l_chg

Oracle EBS 報表日期格式問題

1.確保引數日期值集選擇:FND_STANDARD_DATE 2.將程式的入口引數選擇為 varchar2型別 3.注意輸出和遊標時引數的截斷  to_date(substr(p_DATE_from,1,10),g_date_format)   g_dat

Oracle EBS 查詢使用者職責

select b.user_name UserID, b.description User_Name, f.RESPONSIBILITY_NAME RESPONSIBILITY from FND_USER_RESP_GROUPS a,

Oracle EBS 複製使用者職責

DECLARE l_new_user_name VARCHAR2(100) := 'HAND_HYL'; l_new_password VARCHAR2(100) := '54321'; l_new_user_id NUMBER; l_user_name_copy_from VA

Oracle EBS AR 更新客戶

DECLARE    l_return_status VARCHAR2(300);    l_msg_count     NUMBER;    l_ms