Use o fragmento de código de amostra e os gráficos de dados para procurar entidades alteradas e excluídas.
As etapas a seguir são cobertas neste cenário de amostra:
Assegure-se de ter lido as informações e concluído as etapas descritas no tópico Pré-requisitos de Programação.
As entidades devem existir no repositório antes de executar os métodos fornecidos no código de amostra a seguir.
Inclua o seguinte código de amostra no código do aplicativo e substitua as variáveis pelos valores reais que você deseja usar.
/**
* Este teste exclui uma entidade e depois
* executa uma procura por entidades alteradas
*/
public static void testScenario() throws Exception
{
// Obter o ponto de verificação atual para o repositório
// Isso é necessário para que possamos fazer atualizações nas entidades
// ou excluir qualquer entidade, de modo que ela possa ser retransmitida quando
// fizermos uma procura para recuperar entidades alteradas ou excluídas desde esse ponto de verificação
DataObject prevRoot = getCurrentCheckPoint();
//Excluir a entidade
deleteEntity("uid=SalesManager2,o=SalesManager,dc=yourco,dc=com");
// Procurar a entidade alterada
DataObject searchRoot = searchChangedEntities(prevRoot);
}
/**
* deleteEntity para executar uma operação de exclusão
* @param uniqueName uniqueName da entidade que precisa ser excluída
* @return DataObject após a operação de exclusão
* @throws Exception
*/
public static DataObject deleteEntity(String uniqueName) throws Exception
{
DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_ENTITY);
DataObject ctrl = SDOHelper.createControlDataObject(root, null, SchemaConstants.DO_DELETE_CONTROL);
// Configurar as propriedades no objeto de dados Controle de Exclusão
ctrl.setBoolean(SchemaConstants.PROP_DELETE_DESCENDANTS, true);
ctrl.setBoolean(SchemaConstants.PROP_RETURN_DELETED, true);
entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
uniqueName);
root = service.delete(root);
return root;
}
/**
* Obter o ponto de verificação atual
*/
public static DataObject getCurrentCheckPoint() throws Exception
{
DataObject root = SDOHelper.createRootDataObject();
DataObject ctrl = SDOHelper.createControlDataObject(root, SchemaConstants.WIM_NS_URI,
SchemaConstants.DO_CHANGE_CONTROL);
DataObject result = service.search(root);
System.out.println("Ponto de Verificação: "+ printDO(result));
return result;
}
/**
* searchChangedEntities procurar as entidades que foram alteradas
* @param prevRoot DataObject que representa o ponto de verificação anterior
* @return DataObject com resultados da procura
* @throws Exception
*/
public static DataObject searchChangedEntities(DataObject prevRoot) throws Exception
{
DataObject root = SDOHelper.createRootDataObject();
DataObject ctrl = SDOHelper.createControlDataObject(root, SchemaConstants.WIM_NS_URI,
SchemaConstants.DO_CHANGE_CONTROL);
// Configurar a expressão de procura no objeto de dados de controle
ctrl.setString(SchemaConstants.PROP_SEARCH_EXPRESSION, "@xsi:type='PersonAccount'");
// Configurar as propriedades que devem ser recuperadas nos resultados da procura
ctrl.getList(SchemaConstants.PROP_PROPERTIES).add("uid");
ctrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
ctrl.getList(SchemaConstants.PROP_PROPERTIES).add("sn");
// Configurar CHANGETYPE_ALL para procurar entidades alteradas e também excluídas
ctrl.getList(SchemaConstants.PROP_CHANGETYPES).add(SchemaConstants.CHANGETYPE_ALL);
SDOHelper.createChangeCtrlFromChangeRespCtrl(root, prevRoot);
System.out.println("Gráfico de dados de entrada antes de procurar entidades alteradas"+ printDO(root));
DataObject results = service.search(root);
System.out.println("Gráfico de dados de saída depois de procurar entidades alteradas"+ printDO(results));
return results;
}
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:Root>
<wim:controls xsi:type="wim:ChangeResponseControl">
<wim:checkPoint>
<wim:repositoryId>ldapRepo</wim:repositoryId>
<wim:repositoryCheckPoint>59</wim:repositoryCheckPoint>
</wim:checkPoint>
</wim:controls>
</wim:Root>
</sdo:datagraph>
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:Root>
<wim:controls xsi:type="wim:ChangeControl" expression="@xsi:type='PersonAccount'">
<wim:properties>uid</wim:properties>
<wim:properties>cn</wim:properties>
<wim:properties>sn</wim:properties>
<wim:checkPoint>
<wim:repositoryId>ldapRepo</wim:repositoryId>
<wim:repositoryCheckPoint>59</wim:repositoryCheckPoint>
</wim:checkPoint>
<wim:changeTypes>*</wim:changeTypes>
</wim:controls>
</wim:Root>
</sdo:datagraph>
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
<wim:Root>
<wim:entities>
<wim:identifier externalName="uid=SalesManager2,o=SalesManager,dc=yourco,dc=com"
repositoryId="ldapRepo" uniqueId="de158d76-f710-44cc-9e21-747baf2f8944"/>
<wim:changeType>delete</wim:changeType>
</wim:entities>
<wim:controls xsi:type="wim:ChangeResponseControl">
<wim:checkPoint>
<wim:repositoryId>ldapRepo</wim:repositoryId>
<wim:repositoryCheckPoint>60</wim:repositoryCheckPoint>
</wim:checkPoint>
</wim:controls>
</wim:Root>
</sdo:datagraph>