O software IBM® FileNet® P8 ajuda as empresas com o armazenamento e recuperação de conteúdo, automação de processo de negócio e gerenciamento de caso. O FileNet Content Engine é o componente principal do conjunto IBM FileNet ECM para gerenciamento de conteúdo de nível corporativo. Entre as diversas tarefas executadas pelo sistema FileNet P8, ele trabalha como um sistema de gerenciamento de documentos bastante robusto. Um usuário interage com o FileNet Content Engine through Workplace, um aplicativo Java Enterprise Edition (JEE) que fornece uma interface da web para o FileNet Content Engine.
Em sistemas de gerenciamento de conteúdo, a edição de documentos é uma das tarefas principais. No FileNet Content Engine, a edição é executada por meio da seguinte sequência de ações:
- Efetue o registro de saída do documento até um sistema de arquivos local a partir do servidor (análogo ao download do documento).
- Edite e salve o documento usando um editor de documentos localmente.
- Retorne o documento ao servidor do Content Engine (análogo ao upload do documento).
Em um sistema de gerenciamento de conteúdo, as atividades de registro de entrada e de saída constituem o básico do carregamento no sistema. Portanto, o teste do FileNet Content Engine para o registro de entrada e de saída do documento se torna crítico ao avaliar o desempenho geral do sistema.
Neste artigo, descrevemos um método que configura o IBM® Rational® Performance Tester para testar o carregamento do FileNet P8 Content Engine.
As etapas a seguir estão envolvidas na configuração do Rational Performance Tester para o teste de carregamento do processo de edição de documentos do FileNet P8 Content Engine.
- Crie o script de teste.
- Defina os parâmetros do script de teste a fim de adicionar variabilidade ao teste de carregamento.
- Modifique o script de teste para obter a execução correta.
- Crie um planejamento e execute o teste de carregamento.
As ações a seguir descrevem essas etapas com detalhes.
Crie um script de teste no Rational Performance Tester:
- Abra o ambiente de trabalho do Rational Performance Tester.
- Crie um novo projeto de teste de desempenho.
Após a criação do projeto, você será solicitado a criar um novo script de teste a partir de uma gravação.
- Na janela pop-up, selecione RPT HTTP Recording como o tipo de gravador. Dê um nome apropriado ao teste e inicie a gravação.
O Rational Performance Tester abrirá o navegador padrão, Microsoft Internet Explorer, para capturar as solicitações.
- Acesse o aplicativo Workplace , execute as ações necessárias no navegador e pare a gravação fechando o navegador.
Isos gerará o script de teste com as solicitações HTTP correspondentes a essas ações.
Dica:
dê nomes significativos às
solicitações HTTP no script de teste. A partir do Rational Performance
Tester v8.1, é possível usar o ícone (página em branco com um lápis azul,
circulado na Figura 1) na barra de ferramentas Recorder Test Annotation
para dar nomes apropriados às solicitações, enquanto grava um script de
teste.
Figura 1. Barra de ferramentas Recorder Test Annotation
Observação:
capture as ações relacionadas às
operações de registro de entrada e de saída no mesmo script de teste. Essa
abordagem facilita a incorporação da lógica de script, que garantirá
que um usuário tenha permissão para realizar somente uma operação de entrada
em um documento para o qual já tenha realizado o registro de saída.
As ações a seguir devem ser executadas durante a gravação do script de teste no Rational Performance Tester:
- Acesse o Workplace digitando o URL relevante no navegador,
por
exemplo:
http://testhost:9080/Workplace - Efetue login no Workplace com as credenciais de usuário relevantes.
- Vá até a pasta que contém os documentos selecionando o armazenamento de objetos relevante a partir da página inicial.
- Para realizar o registro de saída de um documento, selecione-o e clique com o botão direito do mouse para acessar o menu de operações e selecione a operação Check Out .
- Na nova janela do navegador que é aberta, faça o download do documento retirado e feche a janela.
- Edite o documento transferido por download.
- Para efetuar o registro de entrada do documento modificado, selecione o documento retirado, clique com o botão direito do mouse para acessar o menu de operações e selecione a operação Check In .
- No assistente de registro de entrada aberto, execute estas ações:
- Na etapa Set Properties, ative o registro de entrada como a versão principal e use os valores padrão para todas as outras propriedades.
- Na etapa Set Security, use as políticas de segurança padrão.
- Na etapa Select File, use a opção Local File para procurar e localizar o documento modificado e clique em Finish.
- Clique em OK para confirmar as mudanças. Isso fechará o assistente e efetuará o registro de entrada do documento.
- Efetue o logout do Workplace.
Defina parâmetros do script de teste
É necessário variar o ID da série da versão na solicitação de registro de saída a fim de permitir que o script de teste funcione com documentos diferentes.
A versão mais recente do documento é sempre aquela que será retirada. O script de teste usará o ID da série da versão como uma referência em vez da versão mais recente do documento. O FileNet P8 Content Engine muda a referência do ID da série da versão para a versão mais recente do documento e, em seguida, efetua o registro de saída desse documento.
- Crie um datapool no Rational Performance Tester com os IDs de série da versão de documentos diferentes na pasta e no armazenamento de objetos respectivos.
- É possível usar o fragmento de código Java da Listagem 1 para recuperar esses valores dos respectivos objetos de documento usando a API do cliente FileNet P8 Content Engine.
Listagem 1. Código para recuperar os IDs de série da versão
public Connection getConnection(String host, String port){
//Build the FileNet connection URL
String filenetUrl = "http://" + host + ":" + port + "/wsi/FNCEWS40MTOM/";
//Return the Connection to the caller
return Factory.Connection.getConnection(filenetUrl);
}
public void getDocAttributes(String host, String port, String userid,
String passwd, String objStoreName, String folderPath)
{
//FileNet P8 Admin user name and password
String userName = userid;
String password = passwd;
boolean userPushed = false;
try{
/* Establish connection with the FileNet P8 Content Engine Server based
* on host and port details
*/
Connection conn = getConnection(host,port);
Subject loginUser = UserContext.createSubject(conn,userName,
password,"FileNetP8WSI");
UserContext.get().pushSubject(loginUser);
userPushed = true;
//Access the Domain and ObjectStore information
Domain gcd = Factory.Domain.fetchInstance(conn,null,null);
String domainName = gcd.get_Name();
ObjectStore objStore = Factory.ObjectStore.fetchInstance(gcd,objStoreName, null);
/* Fetch the folder object that contains the documents
* Get the document set in the folder and iterate
*/
Folder folder = Factory.Folder.fetchInstance(objStore, folderPath, null);
DocumentSet docSet = folder.get_ContainedDocuments();
Iterator iter = docSet.iterator();
Document currentDoc = null;
String docTitle = null;
String docId = null;
String docVersionId = null;
int majorVersion = -1;
int minorVersion = -1;
int versionStatus = -1;
Versionable currentVersion = null;
// versionid represents the version series id
System.out.println("doctitle,docid,versionid,majorversion,minorversion,
versionstatus");
//Retrieve the document properties from the current document object
while (iter.hasNext()){
currentDoc = (Document)iter.next();
docTitle = currentDoc.get_Name();
docId = currentDoc.get_Id().toString();
currentVersion = currentDoc.get_CurrentVersion();
majorVersion = currentVersion.get_MajorVersionNumber();
minorVersion = currentVersion.get_MinorVersionNumber();
docVersionId = currentVersion.get_VersionSeries().get_Id().toString();
versionStatus = currentVersion.get_VersionStatus().getValue();
System.out.println(docTitle + "," + docId + "," + docVersionId + ","+
majorVersion + "," + minorVersion + "," + versionStatus);
}
}finally{
if(userPushed)
UserContext.get().popSubject();
}
}
|
A Figura 2 mostra a solicitação de registro de saída no script de teste que contém o ID da série da versão.
Figura 2. Solicitação de registro de saída com o ID da série da versão
Na solicitação de registro de saída, a variável vsId representa o ID da série de versão (consulte a Figura 3 com os detalhes da solicitação de registro de saída).
- Substitua o valor dessa variável pelo datapool que contém os IDs de série da versão de documentos diferentes.
Figura 3. Detalhes da solicitação de registro de saída
Dica:
para adicionar mais variação aos testes de
carregamento, é possível variar os valores das credenciais de usuário, armazenamento de
objeto e detalhes relacionados à pasta no script de teste.
A operação de registro de entrada é sempre realizada na versão de reserva do documento (a versão de reserva indica uma versão retirada, mas que ainda não passou pelo registro de entrada). Para que a operação de registro de entrada funcione corretamente, o ID do documento retirado deve ser usado como dado de entrada para a solicitação de registro de entrada. Para garantir isso, é possível usar o recurso de código personalizado no Rational Performance Tester a fim de analisar e recuperar o ID do documento a partir de uma URL na resposta da solicitação de registro de saída.
No script de teste, a resposta da solicitação de registro de saída que contém o argumento para o código personalizado é exibida na Figura 4.
Figura 4. Resposta do registro de saída que contém o argumento para o código personalizado
A Listagem 2 mostra a URL que contém o ID do documento retirado recentemente na resposta da solicitação de registro de saída. Essa URL deve ser passada como um argumento para o código personalizado.
Listagem 2. Detalhes da URL
http://jaltarang.in.ibm.com:9080/Workplace/getContent?mode=download&objectType=document&id={753DFAA1-3EE5-4C44-89E3-51DEFFB7E371}&objectStoreName=mcs1db2&returnUrl=http%3A%2F%2Fjaltarang.in.ibm.com%3A9080%2FWorkplace%2FWcmCloseWindow.jsp%3Fop%3Dcheckout%26refreshUrl%3Dhttp%253A%2F%2Fjaltarang.in.ibm.com%253A9080%2FWorkplace%2FBrowse.jsp%253FwindowId%253DmainWindow%26eventName%3DStateChanged
A Listagem 3 mostra o fragmento de código customizado para análise e recuperação do ID do documento.
Listagem 3. Código para análise e recuperação do ID do documento
public String exec(ITestExecutionServices tes, String[] args)
{
int startIndex = args[0].indexOf("id=") + 3;
int endIndex = startIndex + 38;
tes.getTestLogManager().reportMessage(args[0].substring(startIndex,endIndex));
return args[0].substring(startIndex,endIndex);
}
|
A solicitação de registro de entrada no script de teste que contém o ID do documento é exibida na Figura 5.
Figura 5. Solicitação de registro de entrada com o ID do documento
Na solicitação do registro de entrada, a variável id representa o ID do documento (consulte a Figura 6). O valor dessa variável deve ser substituído pelo valor retornado pelo código personalizado.
Figura 6. Detalhes da solicitação de registro de entrada
Observação:
para adicionar mais variedade aos testes de
carregamento, também é possível variar o conteúdo do documento que passa pelo
registro de entrada. O Rational Performance Tester v8.1.1 e mais recente tem uma
funcionalidade integrada para fazer isso. Consulte o IBM TechNote intitulado "Rational Performance Tester: Substituting request content from
a file" (citado na seção Recursos
) para obter mais informações.
Crie um planejamento e execute o teste de carregamento
- Após a modificação do script de teste, crie um planejamento no Rational Performance Tester.
- Adicione o script de teste a esse planejamento.
- Especifique o número necessário de usuários e a taxa de crescimento, e execute o teste com a duração necessária.
Importante:
É importante executar a operação cancel checkout em todos os documentos relevantes após a execução de um teste de carregamento. Na maioria dos cenários, após a conclusão de um teste de carregamento, grande parte dos usuários virtuais saem sem executar todas as ações contidas no script de teste. Isso resulta em muitos documentos com o estado de retirado. A próxima iteração do teste de carregamento reportará muitos erros, caso essa atividade de limpeza não seja executada. É possível usar o fragmento de código Java exibido na Listagem 4 para automatizar a execução da operação cancel checkout nos documentos.
Listagem 4. Código para automatizar a operação cancel checkout
public void deleteReservation(String host, String port, String userid,
String passwd, String objStoreName, String folderPath)
{
//FileNet P8 Admin user name and password
String userName = userid;
String password = passwd;
boolean userPushed = false;
try{
/* Establish Connection with the FileNet P8 Content Engine Server
* based on host and port details
*/
Connection conn = getConnection(host,port);
Subject loginUser = UserContext.createSubject(conn,userName,
password,"FileNetP8WSI");
UserContext.get().pushSubject(loginUser);
userPushed = true;
Domain gcd = Factory.Domain.fetchInstance(conn,null,null);
String domainName = gcd.get_Name();
//Fetch Object store, Folder and document set in the folder
ObjectStore objStore = Factory.ObjectStore.fetchInstance(gcd,objStoreName, null);
Folder folder = Factory.Folder.fetchInstance(objStore, folderPath, null);
DocumentSet docSet = folder.get_ContainedDocuments();
Iterator iter = docSet.iterator();
Document currentDoc = null;
/* Iterate through the document set, run cancel check out on the documents
* and save the changes
*/
while (iter.hasNext())
{
currentDoc = (Document)iter.next();
docTitle = currentDoc.get_Name();
VersionSeries vs = currentDoc.get_VersionSeries();
if(vs.get_IsReserved ())
{
Document resv = (Document) vs.get_Reservation();
Versionable versionable = resv.cancelCheckOut();
((Document)versionable).save(RefreshMode.NO_REFRESH);
System.out.println("reservation deleted for docTitle:" + docTitle);
}
}
}finally{
if(userPushed)
UserContext.get().popSubject();
}
}
|
Use este processo com outros aplicativos
O artigo o orientou pelas etapas de configuração do IBM Rational Performance Tester para realização de um teste de carregamento a funcionalidade de edição de documentos do FileNet Content Engine. Embora o foco tenha sido o Rational Performance Tester, os principais conceitos e os artefatos incluídos neste artigo podem ser usados com outras ferramentas de teste de carregamento.
Aprender
- Para saber mais sobre o IBM FileNet
P8:
- Leia Writing great code with the IBM FileNet P8 APIs, Part 1, por Bill Carpenter, para começar a usar imediatamente as APIs do FileNet (IBM developerWorks, outubro de 2008).
- Confira a Documentação do IBM FileNet P8.
- Leia estas publicações do IBM® Redbooks® :
- Navegue pela página de visão geral do IBM Enterprise Content Management .
- Descubra mais na página de visão geral do Rational Performance Tester.
- Em seguida, explore a página do Rational Performance Tester no IBM developerWorks a fim de obter links para artigos técnicos e navegar pela assistência ao usuário no Centro de Informações do Rational Performance Tester .
- Leia este TechNote para v8.1.1: Rational Performance Tester: Substituting request content from a file.
- Visite a área do software Rational no developerWorks para obter recursos técnicos e boas práticas para os produtos do Rational Software Delivery Platform.
- Fique por dentro dos eventos técnicos e Webcasts do developerWorks com ênfase em uma série de produtos da IBM e tópicos do segmento de mercado de TI.
- Participe de um briefing ao vivo e gratuito do developerWorks para se atualizar rapidamente sobre produtos e ferramentas IBM, bem como tendências do segmento de mercado de TI.
- Acompanhe as Demos on demand do developerWorks, variando de demos de instalação e configuração de produtos para iniciantes a funcionalidades avançadas para desenvolvedores experientes.
- Melhore suas qualificações. Consulte o arquivo Treinamento e certificação do Rational , que inclui muitos tipos de cursos em uma ampla variedade de tópicos.
É possível realizar alguns deles em qualquer local, a qualquer momento, e muitos dos cursos para iniciantes são gratuitos.
Obter produtos e tecnologias
- Faça o download da versão de avaliação do IBM Rational Performance
Tester.
- Avalie o software IBM da forma que melhor lhe convier: faça o download para uma versão de testes, experimente on-line, use em um ambiente de nuvem ou passe algumas horas no SOA Sandbox aprendendo a implementar Arquitetura Orientada a Serviços de forma eficiente.
Discutir
- Ingresse no fórum do Rational Performance Testing ou no fórum do SOA Testing,
onde você pode compartilhar suas dúvidas e conhecimento sobre os produtos de teste de desempenho da IBM.
- Classifique ou revise o software Rational. É rápido e fácil. Realmente.
- Compartilhe seu conhecimento e ajude outros a usar o software Rational, escrevendo um artigo para o developerWorks. Descubra quais são as características de um bom artigo do developerWorks e como realizá-lo.
- Siga o software Rational no Facebook, Twitter
(@ibmrational), e
YouTubee adicione seus
comentários e solicitações.
- Faça e responda a perguntas e aumente seus conhecimentos participando dos Fóruns do Rational, cafése de wikis.
- Obtenha liderança em pensamento social. Faça parte da comunidade Rational para compartilhar seu conhecimento em software Rational e ficar conectado a seus colegas.

Venumadhav Vanagondi tem mais de cinco anos de experiência como analista de desempenho de software. Ele trabalhou com diversos clientes IBM na solução de problemas de desempenho e é especialista no uso de ferramentas de estimativa, teste e monitoramento de desempenho. Ele possui um mestrado em ciência da computação pelo Indian Institute of Technology Madras.
Sanjay Singh tem aproximadamente 12 anos de experiência em design e desenvolvimento de softwares corporativos escaláveis e de alto desempenho para gerenciamento de conteúdo, telecomunicações e finanças. Ele trabalha com a IBM há cinco anos e é um membro senior da equipe ECM no IBM India Software Lab. Sanjay possui um bacharelado em tecnologia pela Indian Institute of Technology Kanpur.
Sandeep Vedula tem aproximadamente três anos de experiência com desenvolvimento de software para gerenciamento de conteúdo, aprendizado on-line e gerenciamento da cadeia de fornecimento. Ele trabalha com a IBM há dois anos, na equipe ECM. Sandeep possui um mestrado em inteligência artificial pela Central University, Hyderabad.