コード・ジェネレーターの実行

コード・ジェネレーターを使用して、推奨パーティションを実装するために必要な API サービスおよび関連コードを生成します。

開始前に

システム要件 および以下のコード生成プログラム要件を満たしていることを確認してください。

  • コード・ジェネレーターは、以下にアクセスできる必要があります。
    • mono2micro-output ディレクトリーの下に作成された cardinal ディレクトリー ( 収集されたデータを分析するための AI エンジンの実行を参照)。 このディレクトリーには、2 つのカスタマイズ可能パラメーターを持つ構成ファイルなど、コード・ジェネレーターが使用するパーティション情報ファイルおよびその他のファイルが含まれています。
    • モノリス・アプリケーションのソース・コード。 アプリケーション・ソース・コードが、コード分析中にバイナリー・ファイルを生成するために使用されたものとまったく同じであること、またはソース・コード分析中にコード・アナライザーを実行する際に使用されたものと完全に同じであることを確認してください。 コード・ジェネレーターは、モノリスから関連部分をコピーして、リファクタリングされたコードを生成します。
  • コード・ジェネレーターを実行するユーザーには、目的の出力ディレクトリーに対する読み取り権限と書き込み権限が必要です。

また、必要に応じてコード生成プロセスをカスタマイズします。 cardinal ディレクトリー内の app.config.txt ファイルには、2 つのカスタマイズ可能なパラメーターがあります。

ApplicationName
リファクタリングされたアプリケーションの名前。 この値は、生成されたコード、 URL 、および注釈の接頭部として使用されます。
CardinalOutPath
ユーティリティー・クラス・コードが生成されるソース・コード・ツリー内の場所。

手順

コード・ジェネレーターを実行して、推奨パーティションのリファクタリング・コードを生成します。

  1. cardinal ディレクトリーを調べます。

    デイトレーダー・アプリケーションを使用する例を以示します。 cardinal 」ディレクトリは、先に作成した「 mono2micro-output 」ディレクトリからコピーしたものである( 収集したデータを分析するためのAIエンジンの実行を参照)。一方、この例では、「 daytrader7-source 」ディレクトリは、以下の場所からクローンしたものである。 https://github.com/WASdev/sample.daytrader7.git.

    変換入力
    カーディナル
        │   ├── app_config.txt
        │   ├── cardinal_graph.json
        │   ├── class_run.json
        │   ├── partition.txt
    refTable ├─00.json
    symTable │ └─00.json
        └── daytrader7-source
  2. コード・ジェネレーター・コマンドを実行します。
    mono2micro transform -s <src-dir-path> -p <partition-info-dir-path>

    このコマンドで、 <src-dir-path> はアプリケーション・ソース・コード・ディレクトリーのパス名、 <partition-info-dir-path> は AI エンジンによって作成される cardinal ディレクトリーのパス名です。

    コマンドとそのオプションに関する詳細情報を取得するには、 mono2micro transform --help コマンドを実行します。

    考慮事項:
    • コード・ジェネレーターは <src-dir-path> ディレクトリーの下のサブディレクトリーにレポートとソース・コードを作成するため、コード・ジェネレーターを実行するユーザーには、 <src-dir-path> ディレクトリーに対する読み取り権限と書き込み権限が付与されます。
    • モノリス・ディレクトリーの名前が daytrader7-sourceである図を使用し、AI エンジンによって生成された cardinal ディレクトリーが両方とも <dir-path> パスにある場合は、以下のコマンドを使用してコード・ジェネレーターを実行します。
      mono2micro transform -s <dir-path>/daytrader7-source -p <dir-path>/cardinal
  3. 実行の進行状況をモニターします。

    パーティションの数とモノリスのサイズに応じて、コード・ジェネレーター・タスクの完了までの時間は異なります。

    コード・ジェネレーターを実行すると、大量の通知メッセージが生成されます。 ほとんどの場合、メッセージは特別な注意を必要としません。 ただし、構成上の問題がある場合、および一般的な理解のために、慎重にファイルへのメッセージをリダイレクトすることが賢明です。

    コード・ジェネレーターが正常に完了すると、さまざまなレポートを含む <partition-info-dir-path> ディレクトリー内に cardinal-codegen ディレクトリーが作成されます。 各パーティションについて、コード・ジェネレーターは、潜在的なマイクロサービスとして実現するために必要なコードの大部分を含むディレクトリーを作成します。 コード・ジェネレーターは、その完了とレポート・ディレクトリーの作成を発表します。

結果

コード・ジェネレーターが正常に完了すると、以下の Daytrader ディレクトリー構造のようなディレクトリー構造になります。

変換入力
カーディナル
    │   ├── app_config.txt
カーディナル・コデーゲン
    │   │   ├── 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 │ ├─00.json
│ ├─── CardinalFileSummary.txt
CardinalSings │ └─00.json
    │   ├── cardinal_graph.json
    │   ├── class_run.json
    │   ├── instrumenter-config.json
    │   ├── partition.txt
refTable ├─00.json
symTable │ └─00.json
    ├── daytrader7-source
    ├── daytrader7-source-Utility
    ├── daytrader7-source-partition0
    ├── daytrader7-source-partition1
    ├── daytrader7-source-partition2
    ├── daytrader7-source-partition3
    └── daytrader7-source-partition4

この例では、daytrader-source-Utility パーティションには、潜在的なユーティリティ・クラスとして識別された Java モノリシック・アプリケーション・クラスが含まれています。 このパーティションを、IBM Mono2Micro 生成されたコードとともに他のパーティションとして扱うこともできますし、これらのアプリケーション・クラスを、クラスに依存する他のすべてのパーティションとともにユーティリティ .jar ファイルとしてパッケージ化することもできます。

強調表示されたディレクトリーは、コード・ジェネレーターによって作成されます。 cardinal-codegen ディレクトリーにはさまざまなレポートが含まれ、さまざまなパーティションが xxx-partition_n ディレクトリーに書き込まれます。ここで、 xxxApplicationName 値、 n はパーティション番号です。 この例では、区画の名前は daytrader7-source-partition_n です (0 < = n < = 4)。 詳しくは、 カスタム・ビューの作成を参照してください。

これらの各xxx-partition_nディレクトリーには、考慮対象のモノリスから取られたソース・コードの該当部分が含まれています。 出力には、変換用のラッパー、 API サービス、分散オブジェクト管理用のコード、およびガーベッジ・コレクションが含まれますが、これらに限定されません。 コードの移動と生成はすべて、 Mono2Microのコード生成コンポーネントによって自動的に行われます。 現時点では、コード・ジェネレーターは .java ソース・ファイルのみを考慮します。モノリスから構成情報やデプロイメント情報をコピーしたり生成したりすることはありません。 マイクロサービスとしてパーティションを実際にデプロイするには、適切な構成情報を指定する必要があります。

生成される内部cardinal-codegenフォルダーの内容は、さまざまなレポートです。 Cardinal-partition_n-report.txt (0 <= n <= 4) ファイルは、Java の呼び出し解析レポートで、partition_3 partition の図に示すように、個々のパーティションのテキスト形式です。 コード・ジェネレーターの実行中に html オプションを指定して、レポートの統合 HTML バージョンを生成できます。 詳しくは、 Cardinal-Reportを参照してください。


サンプル Cardinal-partition_1-report.txt レポート

Mono2Micro のコード生成コンポーネントは、 CardinalFileSummary.txt ファイルを生成します。このファイルには、コード生成のために実行されるすべてのステップの詳細が記述されています。 このレポートは、コード生成プロセスをより深く理解し、生成されたコードを調べるために、デバッグ用に使用します。 このレポートは参照専用であり、 Mono2Microのどのコンポーネントによっても使用されません。

CardinalFileSummary.txtレポートには、パーティションごとに 5 つのカテゴリーのレポートがあります。 以下の図に、簡略サンプル・レポートを示します。


省略されたCardinalFileSummary.txtレポートのサンプル
レポートの 5 つのカテゴリーは以下のとおりです。
Proxy
ローカルではなく、他のパーティションに属しているオブジェクトにアクセスする必要がある各パーティションのスタブ・クラスを含むレポート。
Service
パーティションの外部からアクセスされるパーティションのオブジェクト用に作成された API を含むレポート。
Original
モノリスからの元の原形の Java ファイルを含むレポート。 これらのファイルは、パーティション内でローカルでのみアクセスされさます。
Dummy
実行時に使用されない静的ソース・コード分析中に取得されたファイルを含むレポート。 これらのファイルに Cardinal Exceptions が追加され、実行時に適切なランタイム例外が生成されるようにします。 このカテゴリーのレポートは、開発者にこれらのファイルに対する潜在的な依存関係を通知します。
Helper
生成されたコードを含むレポート。推奨パーティションとそれに対応するインターフェースのシリアライゼーションおよび例外などの機能を処理します。
このレポートには、グローバル・カテゴリーもあります。
Copied
プログラミング・ロジックを持たないが、区画をコンパイルするために必要なクラス (インターフェースや抽象クラスなど) を含むレポート。

cardinal-codegenディレクトリーの下の最後のレポートはCardinalSings.jsonです。 このファイルは開発者が使用するためのものです。 このレポートには、以下の内容がリストされます。

  • コードを変更する必要がある場所、またはパーティションを潜在的なマイクロサービスとして実装するために詳細な検査が必要な場所をリストします。
  • 開発者用のアクション項目をリストします。キーは CARDINAL_TODO_T<number>であり、アドレス指定する必要があります。また、WARNの種類のアクション項目もリストされます。 これらの警告は、開発者が必要に応じてコードの検査と更新を行うことを指示します。 タスクはクラスとファイル・レベルにグループ化されます。 次のレポートは、サンプル Daytrader アプリケーションのリファクタリング中のWARN TODOsを示しています。 コードジェネレーターは、 CARDINAL_TODO_T<number> の各タスクに対して、詳細な自己説明的コメントを提供する。
    Daytrader の CardinalSings.json レポートの WARN TODO タスク・リストのサンプル