Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Anexos em Aplicativos Oracle R12

O que são anexos em aplicativos Oracle

  • O recurso de anexos permite que os usuários vinculem dados não estruturados, como imagens, documentos de processamento de texto, planilhas ou texto, aos dados do aplicativo. Por exemplo, os usuários podem vincular imagens a itens ou vídeos a operações como instruções de operação.
  • As informações do anexo podem fluir por todo o seu aplicativo. Por exemplo, se você habilitar anexos para um número de peça, onde os usuários anexariam imagens da peça, você poderá habilitar anexos para todos os outros formulários que se referem ao seu número de peça. Os usuários poderão ver a imagem da peça onde quer que o número da peça ocorra.
  • Você pode fornecer segurança para limitar quais anexos os usuários podem ver em formulários específicos, atribuindo categorias de documentos às suas funções de formulário. Os usuários então atribuem anexos individuais a categorias específicas.
  • Você pode adicionar o recurso de anexos aos formulários e funções do seu aplicativo sem modificar o código do formulário, desde que seus formulários sejam criados usando os padrões do Oracle E-Business Suite (começando com o formulário Oracle E-Business Suite TEMPLATE).
  • >

Informações da tabela para anexos


Todas as tabelas que contêm dados relacionados a anexos são de propriedade do esquema FND.

Existem várias tabelas que contêm informações que determinam qual área
do aplicativo pode usar anexos:

FND_LOBS

Os anexos são armazenados na tabela FND_LOBS, esta tabela possui uma coluna BLOB FILE_DATA
onde o anexo é armazenado.

Como é armazenado:

O Oracle Applications não usa nenhuma técnica de compactação e um arquivo de 50K ocupará
50K no banco de dados. O tamanho do arquivo no banco de dados pode ser obtido
usando o pacote DBMS_LOB, o exemplo a seguir mostra os detalhes de um arquivo de 5K que
foi anexado a uma requisição:
select FILE_NAME, FILE_CONTENT_TYPE,
DBMS_LOB.GETLENGTH(file_data) SIZE_BYTES
from FND_LOBS
where FILE_NAME like '%test.doc%'
FILE_NAME FILE_CONTENT_TYPE SIZE_BYTES
----------------------- ------------------ ----------
test.doc application/msword 5120


FND_DOCUMENTS
  • Isso contém informações independentes de idioma sobre o documento, incluindo CATEGORY_ID e DATATYPE_ID. Ele não contém o documento real.
  • DATATYPE_ID é obtido de FND_DOCUMENT_DATATYPES. Esta tabela contém uma linha para cada tipo de dados suportado, por exemplo, texto curto, arquivo etc.
  • CATEGORY_ID é obtido de FND_DOCUMENT_CATEGORIES. Esta tabela contém uma linha para cada categoria de anexo válida em um aplicativo. por exemplo, Comentários e Currículo são todos válidos para APPLICATION_ID =800 e Diversos são válidos para todos os aplicativos (APPLICATION_ID =0). Como cada entidade específica é propagada com categorias válidas, há outra tabela, FND_DOC_CATEGORY_USAGES, que contém uma linha para cada CATEGORY_ID válida para um ATTACHMENT_FUNCTION_ID. Ele determina quais categorias podem ser usadas para anexos em um formulário específico.


FND_DOCUMENTS_TL

A tabela de conversão FND_DOCUMENTS_TL armazena informações sobre os documentos em FND_DOCUMENTS e links para esta tabela pela coluna DOCUMENT_ID. As linhas em
FND_DOCUMENTS_TL incluem uma descrição do documento.


FND_ATTACHMENT_FUNCTIONS

Esta tabela contém informações sobre os formulários para os quais a função de anexos pode ser ativada

Por exemplo, FND_ATTACHMENT_FUNCTIONS contém uma linha para FUNCTION_NAME =
'PERWSHRG', ou seja, o formulário combinado de Pessoa e Atribuição.
FND_ATTACHMENT_BLOCKS vincula-se a FND_ATTACHMENT_FUNCTIONS por meio da coluna
ATTACHMENT_FUNCTION_ID e contém uma linha para BLOCK_NAME ='PERSON' .
FND_ATTACHMENT_BLK_ENTITIES contém uma linha para o bloco 'PERSON' com
DATA_OBJECT_CODE ='PER_PEOPLE_F' e PK1_FIELD ='PERSON.PERSON_ID' e
define se um anexo para este bloco pode ser consultado, inserido , atualizado
e excluído.


FND_ATTACHMENT_BLOCK

Isso contém informações sobre os blocos dentro desses formulários para os quais o recurso de anexos pode ser ativado;

FND_ATTACHMENT_BLK_ENTITIES

Isso contém informações sobre os anexos que podem ser usados ​​em um bloco de formulário específico.

FND_ATTACHED_DOCUMENTS

FND_ATTACHED_DOCUMENTS armazena informações relacionadas a um documento a uma entidade e
neste exemplo conteria ENTITY_NAME ='PER_PEOPLE_F' e PK1_VALUE =44.
PK1_VALUE é o valor para FND_ATTACHMENT_BLK_ENTITIES.PK1_FIELD (ou seja,
'PERSON. PERSON_ID') e, portanto, este anexo é para a pessoa com
PER_PEOPLE_F.PERSON_ID =44. O DOCUMENT_ID do documento armazenado também
é mantido nesta tabela.


FND_ATTACHED_DOCS_FORM_VL
FND_DM_FOLDERATTACHMENTEXT

Consultas relacionadas a anexos


Consulta para encontrar tipos de dados de documentos
SQL> select USER_NAME from fnd_document_datatypes ;
USER_NAME
---------
Short Text
Long Text
Image
OLE Object
Web Page
File
Document Reference
Oracle File
Oracle Files Folder/Workspace

Consulta para encontrar anexo de arquivo
select fad.entity_name
,fad.document_id
,fad.pk1_value
,fad.pk2_value
,fd.datatype_id
,(fad.entity_name || '' || fad.document_id ||'' || fl.file_name) file_name
,fl.file_data
from fnd_attached_documents fad
,fnd_documents fd
,fnd_lobs fl
where fad.document_id = fd.document_id
and fd.media_id = fl.file_id
and fad.entity_name = '&1'
and fad.pk1_value, fad.pk2_value;

Suponha que queremos um anexo Iexpense Line
select report_line_id
from apps.ap_expense_report_lines_all l
where report_header_id=:P_expense_report_number; -- expense report number

SELECT fl.*
FROM apps.fnd_documents_tl fdtl,
apps.fnd_documents fd,
apps.fnd_attached_documents fad,
apps.fnd_lobs fl
WHERE fdtl.document_id = fd.document_id
AND fd.document_id = fad.document_id
AND fad.entity_name = 'OIE_LINE_ATTACHMENTS'
AND fad.pk1_value = ':p_report_line_id' -- line_id from first query
AND fl.file_id = fd.media_id
and fdtl.language='US';

Como determinar o tamanho de um arquivo na tabela FND_LOBS?
select file_name, file_id, 
       to_char(upload_date,'dd-mon-rr hh24:mi:ss'),
       to_char(expiration_date ,'dd-mon-rr hh24:mi:ss'),
       file_content_type, 
       dbms_lob.getlength(file_data) size_byte
from   applsys.fnd_lobs
where  file_id= <your file id>;

Como ver o conteúdo do LOB?
-- Read from fnd_lobs a given file_id
set serveroutput on size 1000000;
declare
  my_lob BLOB;
  Buffer      RAW(255);
  Amount      BINARY_INTEGER := 255;
  Position    INTEGER := 1;
begin
   select file_data into my_lob
   from fnd_lobs
   where file_id = &enter_file_id;
 
   dbms_lob.open(my_lob, dbms_lob.lob_readonly);
   DBMS_OUTPUT.PUT_LINE('Start of data');

   loop
      DBMS_LOB.READ(my_lob, Amount, Position, Buffer);
      /* Process the buffer: */
      DBMS_OUTPUT.PUT_LINE(utl_raw.cast_to_varchar2(Buffer));
      Position := Position + Amount;
   end loop;

   dbms_lob.close(my_lob);
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      DBMS_OUTPUT.PUT_LINE('End of data');
end;
/

Espero que você goste destas informações sobre Anexos no Oracle Applications R12. Por favor, forneça o feedback

Artigos relacionados
FND_LOBS :FND_LOBS armazena informações sobre todos os LOBs gerenciados pelo Generic File Manager (GFM). É uma tabela exclusiva que é usada para dados temporários do EBS e dados permanentes do usuário (ou seja, anexos).
Oracle EBS Auditoria :Como configurar o Oracle EBS Auditing, como adicionar tabelas no grupo de auditoria, como selecionar coluna para auditoria, solicitação simultânea de atualização da trilha de auditoria
Criar usuário EBS do backend :Este post é sobre como criar usuário EBS do backend , como atribuir a responsabilidade do aplicativo ao usuário criado