O gerenciador de membro virtual é configurado para usar o modelo dinâmico. É possível criar novos tipos de propriedade e incluí-los nos tipos de entidade integrados
existentes do gerenciador de membro virtual dinamicamente em tempo de execução.
Sobre Esta Tarefa
É necessário chamar a API createSchema do gerenciador de membro virtual para
criar novos tipos de propriedade e incluí-los nos tipos de entidade integrados existentes
do gerenciador de membro virtual em tempo de execução sem reiniciar o gerenciador de
membro virtual. O Adaptador LDAP e o Adaptador de BD prontos para uso suportam esse tipo
de procedimento. Neste exemplo, você deseja criar um novo tipo de propriedade
denominado postOfficeBox e incluir esse tipo de propriedade no tipo de entidade
integrado do gerenciador de membro virtual, PersonAccount. Esse exemplo usa o
Adaptador LDAP.
Execute
o seguinte:
Procedimento
- Se os adaptadores subjacentes incluírem o Adaptador LDAP, assegure-se de que o
esquema de atributo LDAP correspondente do novo tipo de propriedade seja definido no
servidor LDAP e contido pelas classes de objeto LDAP do tipo de entidade. O gerenciador de membro virtual não fornece função para criar e atualizar o esquema
LDAP no servidor LDAP. Nesse exemplo, a classe de objeto inetOrgPerson do tipo de
entidade PersonAccount já contém o atributo LDAP postOfficeBox
Se os adaptadores subjacentes incluírem o Adaptador de BD, nenhuma preparação
adicional será necessária.
- No lado do cliente, construa um gráfico de dados para criar o novo tipo de
propriedade. O objeto de dados PropertySchema é usado para criar um novo tipo de propriedade. Atributos
como propertyName, dataType e multiValued são usados para especificar os metadados do
novo tipo de propriedade. Os tipos de entidade aplicáveis são definidos no elemento
applicableEntityTypeNames.
Vários tipos de entidade podem ser especificados. É possível
definir o nome do atributo do repositório correspondente dessa propriedade, incluindo uma
configuração de atributo LDAP e especificando o nome da propriedade do gerenciador de
membro virtual correspondente. Para obter informações sobre essa configuração usando a interface da linha de comandos, leia sobre o comando addIdMgrLDAPAttr em Grupo de comandos IdMgrRepositoryConfig para o objeto AdminTask no centro de informações do WebSphere Application Server.
A seguir, o gráfico de dados de amostra. O novo tipo de propriedade a ser criado é
chamado postOfficeBox e incluído no tipo de entidade PersonAccount.
Como o nome do
atributo LDAP correspondente postOfficeBox é o mesmo nome de propriedade, não é
necessário incluir uma configuração LDAP para esse nome de propriedade.
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:sdo="commonj.sdo"
xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:schema>
<wim:propertySchema nsURI="http://www.yourco.com/wim/yourext"
dataType="STRING" multiValued="true"
propertyName="postOfficeBox">
<wim:applicableEntityTypeNames>PersonAccount</wim:applicableEntityTypeNames>
</wim:propertySchema>
</wim:schema>
</sdo:datagraph>
Resultados
No lado do cliente, o aplicativo de exploração do gerenciador de membro
virtual chama a API createSchema do gerenciador de membro virtual através do Provedor de
Serviços Local. O Provedor de Serviços Local detecta que essa chamada altera o esquema e
atualiza o esquema local (ECore) após a finalização da chamada da API createSchema.
No
lado do servidor, o Schema Manager recebe a chamada da API do cliente. O Schema Manager
primeiro verifica se os novos tipos de propriedade já existem e lança uma exceção caso
existam. Em seguida, o Schema Manager atualiza o modelo ECore na memória para incluir
novos tipos de entidade nos tipos de entidade existentes. Nessa amostra, a EClass de
PersonAccount é incluída em um novo EAttribute chamado postOfficeBox.
O Schema
Manager inclui o esquema dos novos tipos de propriedade no arquivo wimxmlextension.xml. A
seguir, o conteúdo de amostra do arquivo wimxmlextension.xml após essa atualização ser
concluída.
<wim:propertySchema nsURI="http://www.yourco.com/wim/yourext"
dataType="STRING" multiValued="true" propertyName="postOfficeBox">
<wim:applicableEntityTypeNames>PersonAccount</wim:applicableEntityTypeNames>
</wim:propertySchema>
O Schema Manager chama o Gerenciador de
Repositório que em seguida chama o método SPI createSchema de todos os adaptadores.
Os
adaptadores que suportam a criação do esquema executam as operações necessárias
para suportar o novo esquema. Como exemplos, o Adaptador LDAP atualiza o cache para
refletir as mudanças no esquema e na configuração. O Adaptador de BD cria o esquema da
nova entidade e propriedade em seu banco de dados e atualiza seus caches.
Nota: Os
adaptadores que não suportam a criação de esquema, por exemplo, o Adaptador de
Arquivo que não suporta a criação de novos tipos em tempo de execução, emitem uma
OperationNotSupportedException.
Se pelo menos um adaptador de repositório
suportar a criação de novas entidades e não emitir a OperationNotSupportedException,
o gerenciador de membro virtual retornará os IDs desses repositórios no gráfico de dados
de saída.
No lado do cliente, depois que a chamada da API createSchema é
retornada, o Provedor de Serviços Local chama a API getEPackages para recuperar os
últimos esquemas. O Provedor de Serviços Local registra novamente os esquemas na JVM
cliente. Os aplicativos de exploração podem chamar a API create do
gerenciador de membro virtual para criar uma nova entidade do tipo PersonAccount com a
propriedade postOfficeBox. O gerenciador de membro virtual não precisa ser reiniciado
para que a mudança no esquema se torne ativa.