outubro 5, 2009

Tutorial de UCM

Seguindo o tutorial de instalação do UCM (aqui!), vamos agora configurar o nosso repositório. Este tutorial tem como objetivo mostrar os primeiros passos na configuração do UCM, com a criação de regras, usuários, configurações de segurança, perfis de documentos, workflows, etc.

Este tutorial está dividido em 3 partes, e em breve estará publicado também no OTN LAD.

Confira o tutorial nos links abaixo:

Parte 1:

http://blogs.oracle.com/ecmbrasil/Hands-on%20UCM_Parte1.pdf

Parte 2:

http://blogs.oracle.com/ecmbrasil/Hands-on%20UCM_Parte2.pdf

Parte 3:

http://blogs.oracle.com/ecmbrasil/Hands-on%20UCM_Parte3.pdf

Importante: antes de fazer este exercício, você precisa ter um ambiente com UCM instalado, se possível de acordo com o tutorial de instalação (neste link).

Aproveitem!

Estou estudando temas para os próximos tutoriais, por isso gostaria de ouvir de vocês: o que você quer ver no próximo tutorial: Integração com SOA? Portlets? Conversão de imagens/vídeos? Gestão de ciclo de vida? Workflows mais complexos?

Mande sua opinião através da nossa seção de Comentários. Irei trabalhar nas sugestões conforme o tempo permitir :-)

Até a próxima!

[18/11] OBS: Este tutorial já está disponível também no OTN LAD. Confira os links:

Parte 1: http://www.oracle.com/technology/global/lad-pt/pub/articles/ucm/hands-on-ucm-parte1.html

Parte 2: http://www.oracle.com/technology/global/lad-pt/pub/articles/ucm/hands-on-ucm-parte2.html

Parte 3: http://www.oracle.com/technology/global/lad-pt/pub/articles/ucm/hands-on-ucm-parte3.html

maio 31, 2009

Autenticação e Autorização – um caso interessante…

Há umas 2 semanas tive um desafio interessante para resolver, por isso resolvi postar aqui o “causo”, pois ele é mais comum do que se imagina.

Um cliente em início de projeto possui os usuários no Active Directory (mais de 10.000), porém o AD não tem nenhuma configuração de roles. As roles ficam armazenadas em uma tabela de banco de dados e são gerenciadas por outro sistema. Ou seja, a autenticação é feita em um lugar e a autorização é feita em outro.

Aparentemente esta configuração é mais comum do que se imagina: o AD é usado apenas para usuários e senhas, e outro sistema é usado para a parte de autorização…

O UCM pode usar o AD como diretório de usuários. Isto é feito através de um componente fornecido pela Oracle, e o mapeamento é feito na interface visual:

image

Um Provider é um elemento externo que vai ser usado pelo repositório: um banco de dados, um diretório LDAP, uma ferramenta de conversão, etc. Neste caso, cadastramos o AD como um provider que será usado para autenticação. Você pode ter mais de um LDAP configurado, em ambientes de múltiplos domínios ou para contingência.

O problema aqui é que o provider pede o mapeamento das roles (campo Role Prefix). E, como o AD não tem role configurada, os usuários entrariam no sistema como guest (role padrão para usuários não-autenticados).

Para resolver este problema, temos 3 soluções, da mais para a menos indicada:

1 - Usar um produto da Oracle chamado Virtual Directory. Este produto pode consolidar os dados do AD e do Banco em uma visão consolidada, e expor uma interface LDAP. Desta forma, precisaríamos apenas registrar o Virtual Directory no Content Server como um provider, que não precisaria lidar com a complexidade de duas origens de autenticação.

2 – Customizar o provider para autenticar os usuários no AD, mas ir ao banco de dados para pegar as roles.

3 – Separar as tarefas: Usar o Web Server (Apache, neste caso) para forçar a autenticação dos usuários (usando um plugin chamado mod_ntlm), e mapear o provider no Content Server apenas para trazer as roles.

Neste caso optamos pela opção 2. Na figura acima, repare no campo Provider Class. Este campo se refere à classe Java que irá fazer a comunicação com o AD. É esta classe que precisamos modificar: ldap.ActiveDirectoryLdapProvider

*** DISCLAIMER *** Antes de fazer este tipo de alteração no seu ambiente, entre em contato com o suporte técnico Oracle. O procedimento deste artigo não é oficial e não foi testado apropriadamente. As instruções abaixo tem caráter meramente informativo. Siga estas instruções por sua conta e risco. A Oracle Corporation e o autor deste artigo se isentam de qualquer responsabilidade por problemas causados por esta configuração.

Se você tem um cenário parecido, (e um espírito aventureiro :-)  vamos fazer as modificações no Provider. O ideal é criar um novo componente com base no componente atual (ActiveDirectoryLdapComponent), desta forma preservando o componente original. Para não deixar este post muito longo, vamos pular esta parte e ir direto ao que interessa:

Editando a classe

O ideal é você usar uma IDE de desenvolvimento para editar a classe. No meu caso, o JDeveloper foi a ferramenta escolhida:

image

Para compilar esta classe, você precisa colocar 2 jars no classpath do projeto. Ambos estão na pasta %UCM_HOME%\shared\classes. Os arquivos são: server.zip e classes111.zip.

O método que nos interessa para este caso é o protected Vector retrieveGroups(String dn). Ele recebe como entrada a string dn, que representa o Distinguished Name no AD. Vejamos abaixo as características de um usuário do AD:

image

Para o usuário Denis Abrantes, o Distinguished Name é:

CN=Denis Abrantes,CN=Users,DC=oracle-ecm,DC=br,DC=oracle,DC=com

O método original usa os seguintes comandos:

protected Vector retrieveGroups(String dn)
    throws ServiceException
{
    LdapConnectionInterface con = getLdapConnection();
    Hashtable results = con.read(dn);
    Vector attributes = (Vector)results.get("memberOf");
    if(attributes != null)
        return attributes;
    else
        return new Vector();
}

Basicamente o que ele faz é conectar ao AD e buscar o atributo memberOf. Este atributo é o que contém as roles. O problema é que os nossos usuários do AD não tem roles, logo o atributo memberOf volta em branco. O que precisamos fazer é mudar a lógica, mas neste caso o método retorna um Vetor com a informação no formato do atributo memberOf. Por isso a nossa nova lógica deverá manter o mesmo padrão de string do atributo memberOf. Na imagem abaixo podemos ver as características de um usuário com roles no AD:

image

Podemos ver que cada role está em um atributo memberOf diferente. Este é o motivo pelo qual o método retorna um Vetor, não uma String. A nossa busca precisa montar, para cada role, uma string do seguinte formato:

CN=<<Role>>,OU=Roles,OU=UCM,OU=Oracle,DC=oracle-ecm,DC=br,DC=oracle,DC=com

O nosso código, portanto, ficaria da seguinte forma:

protected Vector retrieveGroups(String dn)
    throws ServiceException
{
    Vector attributes = new Vector();
    String usuariodn = dn.substring(3,dn.indexOf(","));
    String userrole = "";
     try {
      Connection conn;     
      String username = "stellent";
      String password = "*****";
      String thinConn = "jdbc:oracle:thin:@localhost:1521:xe";
      DriverManager.registerDriver(new OracleDriver());
      conn = DriverManager.getConnection(thinConn,username,password);
     
String comando = "select role from empregadoecm where nm_empregado='"+usuariodn+"';
      Statement s = conn.createStatement();
      ResultSet rs= s.executeQuery(comando);
      rs.next();
      while (!rs.isAfterLast())
            {
         userrole = "CN="+rs.getString("role")+",OU=Roles,OU=UCM,OU=Oracle,DC=oracle-cm,DC=br,DC=oracle,DC=com";
         attributes.addElement(userrole);

         rs.next();
     }
     rs.close();
     }
     catch ( SQLException ex ) { } 

    if(attributes != null)
        return attributes;
    else
        return new Vector();
}

Observe as linhas em vermelho. Pegamos o nome do usuário na DN e usamos para buscar as roles deste usuário na tabela empregadoecm. Em seguida, incluimos esta role em uma string e adicionamos ao Vetor que será retornado.

Após compilar esta classe, só precisamos substituir a classe original, na pasta %UCM_HOME%\classes\ldap pela classe modificada e reiniciar o Content Server. Naturalmente o componente de integração com o AD já deverá estar instalado e mapeado no servidor.

Testando a Nova Classe

O usuário denis.abrantes não existe no Content Server, como podemos conferir pela imagem abaixo:

image

No Active Directory ele não possui nenhuma role, e no banco de dados ele possui a role de Gerente. Quando fizermos o login no UCM com este usuário, ele será autenticado no AD e suas roles serão consultadas no banco de dados:

 

image

A partir do login, o usuário passa a existir no Content Server, com os atributos herdados do AD e as roles, do banco:

image

Outros diversos metadados podem ser importados do LDAP e definidos como atributos do usuário: cargo, departamento, email, ramal, etc.

Este exemplo mostra o poder de customização que o Content Server tem: com apenas algumas linhas de código, podemos mudar radicalmente a forma como um login de usuário acontece. Usando recursos como serviços, filtros e triggers, podemos mudar muitos outros comportamentos do servidor, como as rotinas de check-in, busca, workflow, etc.

Mas isso fica para um próximo post…

[]’s

maio 6, 2009

Tutorial de Instalação do UCM

Demorou mas saiu! O tutorial de instalação já está disponível no OTN LAD.

O tutorial foi dividido em 3 partes, incluindo pré-requisitos (sistema operacional, banco de dados, etc), instalação e configuração dos componentes.

O tutorial traz todas as informações, desde os softwares necessários (e os locais de download), até os passos de instalação e configuração. Resumindo, tudo o que você precisa para ter um ambiente de testes com o Oracle UCM.

Entre os recursos abordados estão a conversão de documentos para PDF, marca d’água, integração com Windows Explorer e email, conversão para HTML e muitos outros.

Confira os tutoriais nos links abaixo:

Parte I: Visão Geral e Pré-Requisitos:

http://www.oracle.com/technology/global/lad-pt/pub/articles/09-apr/ucm-instalacao/parte1.html

Parte II: Instalação do Content Server:

http://www.oracle.com/technology/global/lad-pt/pub/articles/09-apr/ucm-instalacao/parte2.html

Parte III: Recursos Adicionais:

http://www.oracle.com/technology/global/lad-pt/pub/articles/09-apr/ucm-instalacao/parte3.html

Este ambiente será usado como base para os futuros tutoriais, portanto se você seguir este tutorial, estará pronto para os próximos exercícios.

Boa sorte e até a próxima!

agosto 12, 2008

Documentos e Mapas ?

Demorei mas voltei! Mas garanto pra vocês que estas demoras em postar são por um bom motivo: trabalho!!!! :-D

Antes de continuarmos com a instalação, gostaria de compartilhar com vocês uma brincadeira que fiquei fazendo nas horas livres: plotar nossos documentos em um legítimo mapa Google!!

Como podemos fazer isto? O Content Server possui uma linguagem de scripts própria, chamada iDoc Script, que vai facilitar muito a montagem de páginas que consultam e trazem informações dos documentos. Combinando um pouquinho de HTML com JavaScript e com iDoc, fica fácil integrarmos com o Google Maps, e localizarmos nossos documentos em um mapa.

A imagem abaixo mostra um exemplo desta integração:

ucm_googlemaps

OBS: Clique na imagem para abrir em tamanho original.

Podemos levar esta integração muito além: imagine por exemplo, que uma imobiliária pode carregar fotos e vídeos de todos os apartamentos à venda em um terminado bairro no Content Server, e permitir que o usuário navegue pelo mapa. Quando o usuário clicar no ponto desejado, ele poderá ver os vídeos e imagens diretamente pelo browser, sem precisar acessar outra interface. Rápido e fácil!!

Iremos continuar com a instalação no próximo post.

Até lá!!

 

julho 21, 2008

Começando...(do começo)

Ok, agora que já sabemos o que é ECM, vamos começar a trabalhar com esta tecnologia.

O grande coração da solução é o Content Server, ou servidor de conteúdo. Ele é o repositório que irá armazenar todos os documentos, imagens, vídeos, web sites... enfim, todo o conteúdo criado ou gerenciado pela solução.

O Content Server é uma ferramenta leve, totalmente baseada em Java e Web Services, que utiliza um banco de dados para repositório de metadados, e um servidor Web, para oferecer a interface web que os usuários irão utilizar para navegar.

Todos os demais componentes da solução que vimos no último post são integrados ao Content Server, e muitos são instalados como componentes do repositório. Por isso o repositório é um componente crítico da solução de ECM da Oracle. Só que, ao mesmo tempo, ele é extremamente simples de instalar, configurar e gerenciar!

Começaremos neste post uma sequência para instalação do Content Server, pré-requisitos e dicas de configuração.

O primeiro passo é analisarmos os pré-requisitos... tudo o que você precisa para instalar o Content Server é um sistema operacional: os homologados são Windows (2000 e 2003 Server), Linux (Oracle Enterprise Linux 4 ou 5, Red Hat 3, 4 ou 5, SuSE 9 ou 10) ou UNIX (Solaris 9 ou 10, AIX 5L, HP-UX 11i). Além disso, você precisará de um Banco de Dados (Oracle 9i ou superior, SQL Server 2000 ou 2005, Sybase ou DB2 8.1 ou 8.2) e um servidor Web (Apache ou IIS).

No nosso cenário, iremos instalar o Content Server em Windows 2003 Server, utilizando um banco Oracle Express como repositório e um Apache 2.0 como servidor Web. O Oracle Database Express é a versão gratuita do banco de dados Oracle e, embora não seja suportada em ambiente de produção, é a mais simples para o nosso ambiente de teste. Você pode fazer o download do banco Express clicando aqui. O Apache é gratuito, e o download pode ser feito neste endereço.

O Content Server está disponível no site da Oracle para testes por um período de 30 dias. O link para download é:

http://www.oracle.com/technology/software/products/content-management/index.html

Neste link, você pode fazer o download apenas do Content Server (primeira opção). Os demais componentes serão abordados no futuro.

Uma vez que você tenha estes 3 instaladores na sua máquina, poderemos começar a instalação, pelo banco de dados. Mas isto fica para o próximo post.

Até lá!

 

julho 6, 2008

Primeiro Post

Bem Vindo!

Este blog é dedicado à solução de Enterprise Content Management da Oracle, e o foco será discutir idéias, projetos, recursos e funcionalidades desta solução em projetos no Brasil e no mundo.

O primeiro passo é entendermos o conceito de ECM. Segundo a definição do AIIM,

Enterprise Content Management (ECM) is the technologies used to capture, manage, store, preserve, and deliver content and documents related to organizational processes. ECM tools and strategies allow the management of an organization's unstructured information, wherever that information exists.

ECM pode também pode ser visto como uma evolução do conceito de GED, embora o GED seja mais voltado à digitalização e armazenamento de imagens.

ECM_CicloVidaA premissa do ECM é incluir todas as funcionalidades previstas em um GED e adicionar novos recursos, como conversão de formatos, publicação na web, criptografia e proteção à documentos, gestão de registros físicos, políticas de retenção e compliance com regulamentações, etc.

Enfim, gerenciar todo o ciclo de vida de um documento, do momento em que ele é criado (ou capturado), até o momento em que a política de retenção determina que ele deve ser destruído.

Tudo isto em um único repositório, eliminando a redundância e duplicidade de documentos.

Clique aqui para assistir a um video que traz uma introdução à solução de ECM da Oracle.

O conceito é bastante amplo, e será discutido ao longo dos próximos posts. Também iremos incluir dicas e novidades do mercado, sempre que algo interessante aparecer.

Encerraremos este primeiro post com uma listagem dos principais produtos que fazem parte da solução de ECM da Oracle:

Universal Content Management Solução para armazenamento e gerenciamento de documentos e ativos digitais. Inclui módulos para gestão de imagens e vídeos, publicação na web, políticas de retenção, etc. Interface web e integração com diversas ferramentas cliente.
Universal Records Management Solução para definição e aplicação de políticas de retenção para diversos repositórios corporativos. Certificado no padrão DoD 5015.2. Oferece também funcionalidades para gestão de ativos físicos.
Imaging and Process Management Solução que integra softwares de digitalização à sistemas de gestão corporativa (ERPs), automatizando o fluxo de recebimento e processamento de notas fiscais, etc. Certificado para integração com os principais sistemas do mercado.
Information Rights Management Solução de criptografia de documentos que garante a segurança dos documentos mesmo fora do repositório, em CDs, DVDs, pen drives, inbox de emails, etc. Criptografia baseada em padrões de mercado.
Document Capture Solução para digitalização, indexação e integração com o Universal Content Management. Permite que documentos digitalizados sejam indexados, interpretados (OCR) e armazenados diretamente no repositório do Universal Content Management, com atributos customizados.
Universal Online Archive Solução de arquivamento para grandes volumes de documentos históricos. Baseado no banco de dados Oracle, pode ser utilizado para arquivamento de servidores de email, como Exchange, Lotus Notes e servidores SMTP.

Obrigado e até a próxima!!