Executando o gerador de código
Você usa o gerador de código para gerar os serviços da API e o código relacionado necessário para implementar as partições recomendadas.
Antes de iniciar
Certise-se de atender aos requisitos do sistema e aos seguintes requisitos de gerador de código.
Além disso, personalize o processo de geração de código conforme necessário. O arquivo app.config.txt no diretório cardinal tem dois parâmetros personalizáveis.
- ApplicationName
- O nome do aplicativo refatorado. O valor é usado como o prefixo para o código gerado, URL e anotações.
- CardinalOutPath
- O local na árvore de código-fonte onde o código de classe utilitário é gerado.
Procedimento
Execute o gerador de código para gerar código de refatoração para as partições recomendadas.
Resultados
Uma conclusão bem-sucedida do gerador de código resulta em uma estrutura de diretórios semelhante à estrutura de diretórios Daytrader a seguir.
transformar-entrada ├── cardeal │ ├── app_config.txt │ ├── cardinal-codegen │ │ ├── Cardinal-Utility-report.txt │ │ ├── Cardinal-partition0-report.txt │ │ ├── Cardinal-partition1-report.txt │ │ ├── Cardinal-partition2-report.txt │ │ ├── Cardinal-partition3-report.txt │ │ ├── Cardinal-partition4-report.txt │ │ ├── CardinalFileSummary.json │ │ ├── CardinalFileSummary.txt │ │ └── CardinalSings.json │ ├── cardinal_graph.json │ ├── class_run.json │ ├── instrumenter-config.json │ ├── partition.txt │ ├── refTable.json │ └── symTable.json ├── daytrader7-source ├── daytrader7-source-Utility ├── daytrader7-source-partition0 ├── daytrader7-source-partition1 ├── daytrader7-source-partition2 ├── daytrader7-source-partition3 └── daytrader7-source-partition4
Neste exemplo, a partição daytrader-source-Utility contém classes de aplicativos monolíticos Java identificadas como possíveis classes de utilitários. Você pode tratar essa partição como qualquer outra partição junto com o IBM Mono2Micro código gerado, ou pode empacotar essas classes de aplicativo como um arquivo .jar utilitário com todas as outras partições que dependem das classes.
Os diretórios destacados são criados pelo gerador de código. O diretório cardinal-codegen contém vários relatórios, e várias partições são escritas nos diretórios xxx-partition_n , onde xxx
é o valor ApplicationName e n
é o número da partição. Para o exemplo, as partições são nomeadas daytrader7-source-partition_n
(onde 0 < = n < = 4). Para obter mais informações, consulte Criando visualizações customizadas
Cada um desses diretórios xxx-partition_n contém as partes apropriadas do código-fonte extraído do monolítico em consideração. A saída inclui, mas não está limitada a, wrappers transformacionais, serviços de API, código para gerenciamento de objetos distribuídos e coleta de lixo. Toda a movimentação e a geração de códigos são feitas automaticamente pelo componente de geração de códigos do Mono2Micro No momento, o gerador de código considera apenas os arquivos de origem .java ; ele não copia ou gera nenhuma informação de configuração ou de implementação do monolito. Para a implementação real das partições como microsserviços, deve-se fornecer as informações de configuração apropriadas.
O conteúdo da pasta cardinal-codegen interna gerada são vários relatórios. Os arquivos Cardinal-partition_n-report.txt (onde 0 <= n <= 4) são os relatórios de análise de invocação Java para partições individuais em formato de texto, conforme mostrado na figura para o partition_3
partition
. Você pode especificar a opção html enquanto executa o gerador de código para gerar uma versão HTML consolidada do relatório. Para obter mais informações, consulte Relatório Cardinal.

O componente de geração de código do Mono2Micro gera o arquivo CardinalFileSummary.txt , que detalha todas as etapas executadas para gerar o código.. Você usa o relatório para depuração, para uma compreensão mais profunda do processo de geração de código, e para olhar o código gerado. O relatório é apenas para uso de referência e não é usado por nenhum componente de Mono2Micro
Para cada partição, há cinco categorias de relatórios no relatório CardinalFileSummary.txt. Um relatório de amostra abreviado é mostrado na figura ao lado.

Proxy
- Um relatório que contém aulas de stub para cada partição que precisa acessar objetos que não são locais e pertencem a outras partições.
Service
- Um relatório que contém as APIs criadas para os objetos das partições que são acessadas de fora da partição.
Original
- Um relatório que contém os arquivos Java intactos originais de monolith. Esses arquivos são acessados apenas localmente dentro da partição.
Dummy
- Um relatório que contém os arquivos captados durante análise de código-fonte estática que não são usados em tempo de execução.
Cardinal Exceptions
são adicionados a esses arquivos para garantir que exceções de tempo de execução apropriadas sejam geradas se forem executadas. Esta categoria de relatório também informa os desenvolvedores sobre potenciais dependências nesses arquivos. Helper
- Um relatório que contém código gerado que manipula tais funções como serialização e exceções para as partições recomendadas e suas interfaces correspondentes.
Copied
- Um relatório que contém classes que não possuem lógica de programação mas são necessárias para compilar as partições, como interfaces e classes abstratas.
O relatório final no diretório cardinal-codegen é CardinalSings.json. Este arquivo é destinado ao uso por desenvolvedores. Este relatório lista o seguinte conteúdo:
- Lista os locais em que o código precisa ser alterado ou onde a inspeção detalhada é necessária para implementar partições como potenciais microserviços.
- Lista itens de ação para desenvolvedores, chaveados como
CARDINAL_TODO_T<number>
, que devem ser abordados, ou que são da variedadeWARN
. Esses avisos aconselham os desenvolvedores a inspecionar e atualizar o código conforme necessário. As tarefas são agrupadas em níveis de classe e de arquivo. O relatório a seguir mostra oWARN TODOs
enquanto refatora a aplicação Daytrader de amostra. Comentários detalhados e autoexplicativos são fornecidos pelo gerador de código para cada tarefa doCARDINAL_TODO_T<number>
.