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