Ganchos são pontos de entidade, como acionadores, para scripts que executam em momentos específicos para controlar como os usuários trabalham em um ambiente do Rational ClearQuest.
Os ganchos são executados com privilégio de superusuário e, portanto, não estão sujeitos ao controle de acesso usual ou restrições do comportamento do campo. Você pode utilizar ganchos para configurar e reconfigurar valores nos campos que geralmente são de leitura. (Você não pode reconfigurar campos de sistema, tais como o campo Histórico.) Os campos obrigatórios permanecem como tais. Para obter informações adicionais, consulte IBM Rational ClearQuest API Reference e Ações e Controle de Acesso .
Quatro tipos de ganchos são suportados:
Os ganchos de campos fornecem uma forma de verificar um valor de campo no tempo de execução e para ajustar outros campos conforme necessário. Por exemplo, você pode validar o conteúdo de um campo ou designá-lo a um valor padrão.
Os ganchos de ações fornecem uma forma de desempenhar tarefas em pontos-chave no ciclo de vida de um registro. Em geral, os ganchos de ações são associados a eventos que afetam todo o registro. Por exemplo, você pode validar o registro inteiro e enviar notificações quando a ação é concluída.
Os scripts de registros fornecem uma forma de desempenhar tarefas específicas no tempo de execução. Eles são específicos de um tipo de registro e são geralmente associados a controles de formulário.
Os scripts globais fornecem uma forma de definir bibliotecas de rotinas que podem ser compartilhadas por todos os tipos de registros no esquema. Por exemplo, você pode gravar uma sub-rotina, como uma notificação de e-mail, que pode ser chamada a partir de qualquer gancho em qualquer tipo de registro.
Você pode criar ganchos em VBScript (para Windows) e Perl (para o sistema UNIX e Windows). Por padrão, ganchos são executados em VBScript no Windows. Para obter informações sobre a execução de ganchos no Perl para Windows, consulte Linguagens de Script.
Você pode incluir um script escrito em VBScript ou Perl em ganchos de campos e ações. Se você estiver criando scripts globais ou scripts de registros, deverá utilizar VBScript ou Perl.
Para armazenamento e referência apropriados, você pode gravar scripts em VBScript e Perl no mesmo esquema. Entretanto, um esquema executa scripts apenas na linguagem especificada (consulte Linguagens de Script).
Grave ou edite scripts no editor de script. Quando definir um novo script, o Designer inclui a sintaxe de chamada para esse gancho na janela do editor de scripts. A sintaxe da chamada não pode ser editada. O Designer também inclui o texto de corpo de amostra que você pode editar conforme necessário. (O texto de corpo inicial é comentado e não é executado a menos que você remova os marcadores de comentários.)
O Designer fornece um editor de scripts diferentes para VBScript e Perl, e indica o tipo de editor na barra de título da janela. Verifique se você está no editor correto antes de escrever seu código.
O processo de escrita de ganchos VBScript e Perl é simplificado porque o contexto operacional é consistente. Antes que um gancho chame um script VBScript ou Perl, o software Rational ClearQuest cria um objeto de sessão e efetua login no usuário. Como todos os ganchos (incluindo scripts globais) são executados a partir do contexto do registro atual, será fornecido um objeto Entity que corresponde a esse registro. (Os Scripts Globais compartilham o objeto Entity associado ao gancho que o chamou).
Em um script, é possível chamar os métodos de Entity sem especificar um identificador inicial. Por exemplo, você pode chamar o método GetSession de Entity da seguinte maneira:
set curSession = GetSession
Ao chamar métodos desta forma, o software Rational ClearQuest assume que você está chamando um método do objeto Entity implícito transmitido para o gancho. Se você desejar referir-se a esse objeto Entity explicitamente, poderá utilizar o nome do tipo de registro como um identificador para o objeto. A utilização desse identificador pode ajudar a esclarecer o código que manipula mais de um objeto Entity por vez, como no seguinte exemplo, que marca uma entidade como uma duplicata de outra:
set curSession = GetSession idName = GetFieldValue("id").GetValue set currentObj = curSession.GetEntity("defect", idName) ' Marque a entidade com ID="SAMPL00000031" como uma duplicata desta entidade. ' Utilize a ação chamada "duplicate". set dupEntityObj = curSession.GetEntity("defect", "SAMPL00000031") curSession.MarkEntityAsDuplicate dupEntityObj, currentObj, "duplicate"
Como os scripts podem afetar o comportamento de um campo, projete e teste o seu código de gancho cuidadosamente. Por exemplo, se um gancho requerer que um campo contenha algum tipo de valor, o campo será obrigatório mesmo se seu comportamento não estiver configurado como MANDATORY.
O código do gancho pode gerar erros sutis no tempo de execução se ele não estiver escrito corretamente. Para testar ganchos, clique em Testando o Esquema com um Banco de Dados de Teste.
no editor de scripts do Designer e depure seu código de gancho. O processo de validação do esquema não captura erros no código do gancho e não garante que um esquema funcione conforme esperado. Teste um esquema com um banco de dados de teste antes de efetuar o seu registro de entrada e faça backup do seu banco de dados do usuário antes de aplicar nele as alterações do esquema. Para obter informações adicionais, consulteConsidere os seguintes problemas ao planejar os ganchos:
Para obter a saída da depuração detalhada quando ocorrer uma exceção durante a execução do gancho, crie a chave de registro HKEY_CURRENT_USER\SOFTWARE\RationalSoftware\ClearQuest\2.0\Common\HookDebug no Windows com valor de DWORD como 1. Para reverter para a mensagem de depuração de exceção do gancho padrão (menos detalhada), altere este valor para 0.
Muitos problemas relacionados a ganchos executados em um ambiente replicado são os mesmo para problemas de bloqueio do banco de dados do site único. O teste funcional de ganchos também é igual em um site único ou em um ambiente replicado. No entanto, a execução de alguns ganchos ClearQuest pode ser diferente em um ambiente replicado do que em um ambiente de site único. Por exemplo, ganchos que atualizam outros registros no contexto da ação de um registro podem encontrar erros se o outro registro não for controlado no site atual e, portanto, não for modificável.
Cada registro de banco de dados só pode ser atualizado no site no qual é controlado no momento (isso é indicado pelo nome do site da réplica no campo ratl_mastership do registro). Em aplicativos complexos, vários registros podem ser atualizados como parte de uma transação complexa. Ao projetar e testar ganchos em um ambiente replicado, esses princípios devem ser considerados.
Consulte também Bloqueio do Banco de Dados e Validando Esquemas .
Quando você instalar um pacote, os ganchos de campos ou scripts de registros podem ser incluídos em seu esquema. Estes scripts são parte do pacote, não parte do seu código do gancho.
Os scripts não podem ser excluídos ou modificados; eles não são parte do código possuído por um esquema. Por essa razão, não existe relacionamento entre a configuração da linguagem padrão escolhida para o código de gancho e a linguagem em que os ganchos pertencentes a um pacote são implementados.