É possível customizar uma transformação para atualizar a barra de progresso em uma janela de
progresso conforme a transformação conclui suas tarefas.
Esse recurso fornece aos usuários de transformação informações mais precisas sobre quanto trabalho a
transformação concluiu.
Antes de Iniciar
Um autor de transformação deve registrar a transformação no
serviço de transformação.
Para obter mais informações sobre as propriedades que esse tópico descreve,
consulte o link para o tópico de referência relacionado no final deste tópico.
Por Que e Quando Desempenhar Esta Tarefa
Conceitualmente, a barra de progresso é dividida em partes iguais, e que cada parte corresponde a
uma unidade de trabalho. Por padrão, o núcleo da transformação define
x+1 unidades de
trabalho para a barra de progresso, em que
x representa o número de utilitários que uma
transformação invoca, mais uma unidade de trabalho para a própria transformação. Considere os seguintes
exemplos:
- Se uma transformação não invocar nenhum utilitário, o núcleo da transformação define uma unidade de
trabalho para a barra de progresso. A barra de progresso mostra quanto trabalho a transformação concluiu.
- Se uma transformação invocar dois utilitários, o núcleo da transformação define três unidades de trabalho
para a barra de progresso. Quando um utilitário é concluído, o núcleo da transformação atualiza uma parte
da barra de progresso. Quando a transformação conclui suas tarefas, ela atualiza a barra de progresso pelo
número de unidades de trabalho que o autor da transformação alocou para cada tarefa.
Para a
unidade de trabalho da barra de progresso que é alocada para a transformação, é possível controlar as
atualizações para a barra de progresso dividindo a unidade de trabalho em várias unidades de trabalho
menores. Cada unidade de trabalho menor representa uma tarefa que a transformação conclui.
Normalmente
uma transformação conclui várias tarefas, em que cada tarefa é concluída por um elemento de transformação
como uma regra, um extrator ou transformação.
Como um autor da transformação, é possível identificar os pontos nos quais a transformação conclui tarefas.
Nesses pontos, é possível incluir código que atualiza a barra de progresso à medida em que a transformação
conclui suas tarefas.
Após entender os detalhes da implementação da transformação, é possível incluir
código que atualiza a barra de progresso de uma das seguintes maneiras:
- Invoque os métodos da interface IProgressMonitor. Você pode invocar esses métodos nos seguintes locais:
Considere uma transformação básica que conclui duas tarefas: análise da origem da
transformação e geração da saída, que pode ser estimada em 100 arquivos. Para esse exemplo, suponha que você
defina a
propriedade
PROGRESS_MONITOR_WORK_UNITS
para 200. Você pode alocar as unidades de trabalho da barra de progresso da seguinte maneira:
- Após a transformação analisar a origem, incremente a barra de progresso na metade das unidades
especificadas na
propriedadePROGRESS_MONITOR_WORK_UNITS.
- Quando a transformação gerar saída, para cada artefato que ela gerar, incremente a barra de progresso em
uma unidade.
- Execute uma instância da
regracom.ibm.xtools.transform.core.UpdateProgressMonitorRule.
Considere uma transformação que contém uma transformação que processa classes em um modelo de origem, talvez
invocando um extrator Class. Dependendo do modelo de origem, essa transformação pode processar classes UML ou
classes de código. Para cada classe no modelo de origem, a transformação Class executa.
Após a transformação processar uma classe, a transformação executa uma instância da regra
com.ibm.xtools.transform.core.UpdateProgressMonitorRule para atualizar a barra de progresso pelo número de
unidades que a propriedadePROGRESS_MONITOR_INCREMENT
especifica.
O fragmento de código da tabela na etapa
3 mostra o modelo de uma transformação que processa
classes e executa uma instância da regracom.ibm.xtools.transform.core.UpdateProgressMonitorRule. Os
comentários no fragmento de código descrevem as tarefas que a transformação conclui, e a ordem na qual ela as
conclui.
Para refinar a exatidão da barra de progresso quando uma
transformação executa, conclua as seguintes etapas:
Resultados
Para testar as atualizações para a barra de progresso, conclua as seguintes etapas:
- Inicie a ambiente de trabalho de tempo de execução.
- No ambiente de trabalho de tempo de execução, crie uma configuração de transformação para a transformação
executar.
- Execute a transformação.
Quando a transformação executar, a barra de progresso na janela de
progresso atualiza com mais exatidão se o código da transformação não atualizou a barra de progresso.