Use o fragmento de código de amostra e os gráficos de dados para estender o esquema no repositório de extensão de propriedade.
O seguinte fragmento de código de amostra e os gráficos de dados mostram como incluir a propriedade, age, no tipo de entidade PersonAccount, e estender o esquema no repositório de extensão de propriedade, usando o objeto de dados extensionPropertySchema. O repositório de extensão de propriedade deve ser configurado para que você possa usar o extensionPropertySchema. Para obter mais informações, leia sobre Configurando um repositório de extensão de propriedade em uma configuração de repositório associado no centro de informações do WebSphere Application Server.
Assegure-se de ter lido as informações e concluído as etapas descritas no tópico, Pré-requisitos de Programação, incluindo a seção, Estendendo o Esquema de Propriedade, que tem informações sobre os objetos de dados propertySchema e extensionPropertySchema e lista a sintaxe válida para os tipos de dados de propriedade.
Inclua o seguinte fragmento de código no código do aplicativo e substitua as variáveis pelos valores reais que você deseja usar.
// Obter um objeto de dados raiz. O restante da árvore de objetos seria integrado nele
DataObject root = SDOHelper.createRootDataObject();
// Criar um novo objeto "esquema" sob a raiz
// Este objeto conterá os detalhes das modificações de esquema que precisam ser feitas
DataObject schema = root.createDataObject(SchemaConstants.DO_SCHEMA);
// Criar um objeto de dados de esquema de propriedade sob o objeto de esquema criado anteriormente
// Nota: Para garantir que a propriedade também seja incluída no repositório de extensão,
// use o Esquema de Propriedade de Extensão em vez do Esquema de Propriedade simples
DataObject propertySchema = schema.createDataObject(SchemaConstants.DO_EXTENSION_PROPERTY_SCHEMA);
// Configurar o valor para o nome da propriedade
propertySchema.setString(SchemaConstants.PROP_PROPERTY_NAME, "age");
// Configurar o namespace para a propriedade
// Como aqui nós estamos definindo a propriedade no namespace padrão,
// não precisamos definir o prefixo de namespace
// Nota: A inclusão da propriedade no namespace padrão só é possível quando o VMM está usando "dynamicModel"
propertySchema.setString(SchemaConstants.PROP_NS_URI, SchemaConstants.WIM_NS_URI);
// Especificar se a propriedade tem diversos valores (se tiver diversos valores, seu tipo deverá ser Lista)
propertySchema.setBoolean(SchemaConstants.PROP_MULTI_VALUED, false);
// Especificar o tipo de dado da propriedade
// Tipos de dados podem ser simples, como booleano, inteiro, flutuante, duplo, Sequência
// ou especiais, como Endereço, Pessoa, Grupo etc.
propertySchema.setString(SchemaConstants.PROP_DATA_TYPE, SchemaConstants.DATA_TYPE_INT);
// Obter a lista de tipos de entidade nos quais essa propriedade precisa ser incluída e
// Incluir os nomes de tipo de entidade aplicáveis (aqui, "PersonAccount") na lista buscada anteriormente
propertySchema.getList(SchemaConstants.PROP_APPLICABLE_ENTITY_TYPE_NAMES).add(Service.DO_PERSON_ACCOUNT);
// Chamar o esquema de criação
root = service.createSchema(root);
É possível usar o comando wsadmin deleteIdMgrPropertyExtensionEntityData para excluir dados de propriedade do repositório de extensão de propriedade. Para obter mais informações sobre o uso do comando, consulte o tópico Grupo de comandos IdMgrDBSetup para o objeto AdminTask no centro de informações do WebSphere Application Server.
Gráfico de dados de entrada para incluir propriedade:
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:sdo="commonj.sdo"
xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:Root>
<wim:schema>
<wim:extensionPropertySchema nsURI="http://www.ibm.com/websphere/wim" dataType="Int"
multiValued="false" propertyName="age">
<wim:applicableEntityTypeNames>PersonAccount</wim:applicableEntityTypeNames>
</wim:extensionPropertySchema>
</wim:schema>
</wim:Root>
</sdo:datagraph>
Gráfico de dados de saída depois de incluir propriedade:
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:sdo="commonj.sdo"
xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:Root>
<wim:schema>
<wim:extensionPropertySchema nsURI="http://www.ibm.com/websphere/wim" dataType="Int"
multiValued="false" propertyName="age">
<wim:applicableEntityTypeNames>PersonAccount</wim:applicableEntityTypeNames>
</wim:extensionPropertySchema>
</wim:schema>
</wim:Root>
</sdo:datagraph>