O script padrão de lógica de negócios não possui acesso a tabelas de saída externas. Existem apenas dois destinos de saída:
O uso da tabela externa T_SLALOM_OUTPUTS é obrigatória quando uma saída adicional é necessária além do resultado de nível de serviço periódico, quando a saída adicional não puder ser fornecido por meio da adição de outra métrica, ou quando a adição de outra métrica diminuir o desempenho do cálculo ao examinar o mesmo conjunto de registros, apenas para fornecer uma saída diferente.
Por exemplo, considere um caso no qual uma métrica está definida para calcular a porcentagem de tickets que foram resolvidos em menos de um dia e um relatório com a lista de todos os tickets que não puderam ser resolvidos em menos de um dia que deve ser gerado, é necessário que a fórmula gere cada ticket encontrado como uma falha para uma tabela externa, além de adicioná-lo às estatísticas de cálculo.
Com o requisito acima, a tabela normal de nível de serviço de saída não pode fornecer essa saída, pois:
Os registros são gravados nas tabelas de saída de usuário apenas para o agente que está em execução no período de monitoramento da métrica e calcula as exceções e as correções. Por exemplo, se a métrica for definido como tendo um período de monitoramento mensal, os parâmetros de saída (Tools.SaveRecord e Tools.SaveFields) NÃO serão executados quando o mecanismo estiver executando a fórmula para as outras granularidades, como HORA, DIA, SEMANA, TRIMESTRE e ANO.
Um outro benefício de ter essa tabela externamente é que ela pode ser usada para diversos requisitos de geração de relatórios. Outros requisitos de geração de relatórios típicos podem ser gerados a partir dessas tabelas além dos requisitos contratuais. Por exemplo, uma métrica que calcula o número de tickets fechados em um mês também pode calcular o tempo de resolução do ticket e produzir todas essas informações para a tabela de saída. Isso permitirá uma análise mais detalhada dos tickets individuais que foram fechados durante o período, juntamente com detalhes adicionais que possam ser necessários em um requisito de geração de relatórios separado.
As informações nessas tabelas também são gerenciadas pelo mecanismo de recálculo do mecanismo. Durante esse processo de recálculo, os registros são marcados como inativos, e uma nova linha é criada. Esse é um ponto importante que deve ser observado, pois todas as instruções SQL de relatório de formato livre precisam incluir uma marca no campo IS_ACTIVE na tabela T_SLALOM_OUTPUTS (onde is_active = 1) já que apenas esses registros são atuais.
Observação: ao executar o escopo de lógica de negócios durante o processo de depuração de fórmulas, as mensagens são gravadas na tabela T_DEBUG_SLALOM_OUTPUTS em vez da T_SLALOM_OUTPUTS.
Ao documentar dados usando T_SLALOM_OUTPUTS, os dados inseridos são sempre texto (pois os campos de T_SLALOM_OUTPUTS são varchar2). Portanto, os valores de data são convertidos em texto ao aplicar o formato do sistema operacional que pode ser alterado durante o ciclo de vida do aplicativo. Portanto, T_SLALOM_OUTPUTS poderá ter inconsistências nos formatos de data. Além disso, a lógica de negócios lida com datas em UTC , sendo que pode-se esperar que T_SLALOM_OUTPUTS tenha data e hora local, por isso, em alguns casos, pode ser necessário usar a função de conversão Tools.GetLocaleDate(date) para solucionar esse problema.
A seguinte função converte datas em horas locais e mantém a consistência do formato de data ao formatar as datas para "dd/mm/aaaa hh24:mi:ss":
Function FormatDate(time)
Dim LocalTime
LocalTime=Tools.GetLocaleTime(time)
FormatDate=Day(LocalTime) & "/" & Month(LocalTime) & "/" &
Year(LocalTime) & " " & _
Hour(LocalTime) & ":" & Minute(LocalTime) & ":" & Second(LocalTime)
End Function
Há dois métodos que podem ser usados para gravar informações na tabela externa a partir da fórmula de lógica de negócios, que são:
Esses dois métodos do objeto de ferramentas são descritos abaixo em mais detalhes:
Tools.SaveRecord tableName, key,[val1],[val2],…
Esse método salva um registro em uma tabela chamada T_SLALOM_OUTPUTS. O parâmetro tableName especifica a tabela (virtual) em T_SLALOM_OUTPUTS na qual as informações devem ser gravadas. Cada registro na tabela de usuário tem uma chave exclusiva, que especifica o registro no qual as informações devem ser gravadas. Cada registro também tem até 20 campos de valor de texto. O método SaveRecord recebe o nome de uma tabela de usuário e uma chave. Ele também aceita todos os campos de valor na tabela de usuário. (Esses parâmetros de valor são opcionais e podem ser omitidos.) Se um registro com a mesma chave já existir, ela será atualizada. (Somente os campos de valor transferidos como parâmetros são atualizados.) Se um registro com esta chave não existir, ela será criada.
Tools.SaveFields tableName, key, [fieldName1,fieldVal1], [fieldName2,fieldVal2]
Esse método é semelhante a SaveRecord, exceto pelo fato de que, em vez de enumerar todos os valores, ele fornece pares de nomes de campo e os valores de campo relacionados. Os números de campo podem ser substituídos por nomes de campo. Os nomes de campo devem ser definidos previamente e manualmente na tabela T_SO_FIELD_NAMES. Essa tabela é usada para registrar a estrutura das tabelas de saída.
É recomendável que o Especialista em lógica de negócios defina a estrutura da tabela de saída antes de gravar na T_SLALOM_OUTPUTS, pois depois a estrutura e o significado dos campos já estarão bem definidos e farão com que a consulta seja muito mais simples.
A estrutura da tabela é:
Usar o método SaveFields é preferível, pois mantém uma documentação da estrutura e o significado dos valores inseridos.
Exemplo:
Considere um caso no qual seja necessário gerar uma lista de todos os incidentes com o tempo de resolução mais alto do que um limite definido, juntamente com os resultados da métrica que calculam a porcentagem de tickets que foram resolvidos abaixo desse limite. A gravação nas tabelas de saída será feita no procedimento do manipulador de eventos OnXXXEvent após a validação do limite.
Isso é ilustrado no exemplo a seguir:
Sub OnIncidentEvent(eventDetails)
If eventDetails("RESOLUTION_TIME")<=SThreshold Then
CountSuccessIncident s= CountSuccessIncidents+1
Else
building the record unique key
KeyString= eventDetails("IncidentID") &eventDetails.Time
Tools.SaveFields "IncidentsTable", KeyString, "CASE_ID",
eventDetails("CASE_ID"),_
"CUSTOMER_REF",eventDetails("CUSTOMER_REF"),_
"TICKET_CREATOR",eventDetails("TICKET_CREATOR"),_
"CREATION_TIME",eventDetails("CREATION_TIME"),_
"SEVERITY",eventDetails("SEVERITY"),_
" RESOLUTION_TIME ",eventDetails("RESOLUTION_TIME "),_
"CLOSE_TIME",eventDetails("CLOSE_TIME")
End If
End Sub
Algumas sugestões relacionadas ao uso das tabelas T_SLALOM_OUTPUTS são:
Observação: gravar nas tabelas de saída pode ter influência sobre o desempenho do mecanismo, já que a gravação em uma tabela exige muito do computador, comparado a um cálculo na memória. Portanto, considere cuidadosamente se é necessário usar essa funcionalidade e onde ela é necessária e, em seguida, reduza o número de vezes que as tabelas são acessadas.
Não é possível usar o Assistente de relatório padrão do CA Business Service Insight para gerar relatórios com as informações gravadas nas tabelas de saída. Para gerar relatórios com essas informações, é necessário criar um relatório de formato livre. Essencialmente, isso significa criar uma consulta SQL em cima dessa tabela. Como essa tabela contém muitas tabelas lógicas que recebem gravações de várias fórmulas, é recomendável que alguém familiarizado com SQL (Especialista em fonte de dados) crie uma exibição na T_SLALOM_OUTPUTS para facilitar a diferenciação entre as várias tabelas lógicas contidas dentro dela, e também para garantir que as informações serão recuperadas conforme planejado.
A definição da exibição já terá todas as conversões dos tipos de campo de texto para o tipo de informações relevantes e também manterá todas a filtragens necessárias (tabela lógica, registros ativos, métrica relevante, etc.).
A seguir, há um exemplo da criação da exibição:
create or replace view kpi_view as
select
to_date(t...) as fieldName,
to_number(t..), …
from t_slalom_outputs t,
t_rules r,
t_sla_versions sv,
t_slas s,
where table_name = 'TableName'
and is_active = 1
and t.rule_id = r.psl_rule_id
and r.sla_version_id = sv.sla_version_id
and sv.sla_id = s.sla_id
and sv.status = 'EFFECTIVE'
| Copyright © 2012 CA. Todos os direitos reservados. | Enviar email à CA Technologies sobre este tópico |