最近のアクセス:
GeneXus のモジュール配布

GeneXus では、モジュールの API とバイナリを配布したり、モジュールをほかのナレッジベースにインストールしたりできます。
このメカニズムを使用して、別のナレッジベースから提供されてインストールしたモジュールには、次の特徴があります。
  • モジュールの API のみが公開されます。
  • API は読み取り専用です。
  • 特定のバージョンの API とその実装 (対応するバイナリ) で構成されます。
  • 新しいバージョンが使用可能になったときに、バージョン管理システム (参照モジュールの管理) を使用して更新できます。
これには次の利点があります。
  • コードのプライバシーを維持できます。
  • モジュールの保守はプロバイダーが担当するため、不要な変更を防止できます。
  • ビルドパフォーマンスが向上します (コードは作成元で 1 回だけビルドされます)。
  • モジュールを社内で配布したり、マーケットプレイス経由で公開したりするのが容易になります。
GeneXus 自体も、このメカニズムを使用して GeneXus Artificial Intelligence などの GeneXus コアモジュールを提供します。

 

手順の説明

次の手順に沿って、モジュールの作成 (既存のモジュールの使用)、モジュールの配布、別のナレッジベースへのモジュールのインストールと使用について説明します。

1) 特定の機能を持つモジュールを作成する

以下のサンプルは、所有者 Daniel Monza の許可を得てモジュール化されています。
イメージ:31380.png

2) モジュールをパッケージ化する

イメージ:31381.png

2.1) パッケージに関する情報を入力する

イメージ:31382.png
使用可能なプラットフォームは、ナレッジべースの環境 (および関連するジェネレーター) に対応します。パッケージ化するモジュール用のプラットフォーム (つまり、.NET、Java、Android、iOS) を選択できます。

2.2) [ OK ] をクリックすると、GeneXus が次の処理を実行する

  1. ビルド -選択した各環境用にモジュールがビルドされます。(実際には再ビルドされます)
  2. パッケージ化 -バイナリとモジュール定義ファイルを含むパッケージが作成されます。 
このケースでは、<ナレッジベースのディレクトリー>\modules\StoneFramework_1.02.opc というファイルが生成されます(拡張子 opc は Open Packaging Convention の略で、実際には zip ファイルです)。
指定したバージョンと著作権情報を含むバイナリが作成されます。
イメージ:31390.png
お疲れ様でした!モジュールが作成されました。

3) 別のナレッジベースを作成するか開き、モジュールをインストールする

3.1) [ ナレッジマネージャ ] > [ 参照モジュールの管理 ] を選択する

イメージ:31384.png
イメージ:31387.png
:
GeneXus の参照モジュールの管理には、まだローカルモジュールしか表示されません。つまり、%appdata%\Roaming\GeneXus\GeneXus\16\Modules_v1 にあるモジュールが検索されます。
作成済みのモジュールが IDE に表示されない場合は、一度閉じてから再び開いてみてください。

3.2) [ インストール ] をクリックしてインストールする

3.3) モジュールが (KB エクスプローラーの [ 参照 ] の下に) インストールされる。このモジュールは読み取り専用であり、その API のみが使用可能になる

イメージ:31388.png

4) 使用する準備が完了する 

イメージ:31389.png
: ビルド時には参照モジュールのバイナリがターゲット環境のディレクトリーにコピーされます。

 

MSBuild タスク

以下のタスクは、モジュールのバッチのパッケージ化とインストールに使用できます。
  • PackageModule
    • パラメーター: ModuleName (文字列)、OutputDirectory (文字列)、Rebuild (ブール値 - 既定値は False)
  • InstallModule
    • パラメーター: ModuleName (文字列)、Version (文字列)、OnlyIfNewer (ブール値 - 既定値は True)
  • UpdateModule
    • パラメーター: ModuleName (文字列)、Version (文字列)(*)
(*) バージョンを指定しなかった場合: 組み込みモジュールは、GeneXus で必要なバージョンに強制的に更新されます。組み込み以外のモジュールは、使用可能な最新バージョンに更新されます。

関連する MSBuild タスクの実行の詳細については、「MSBuild タスク」を参照してください。

  • 複数の同名のオブジェクトがそれぞれ異なるモジュールで配布されることもあります。
    それらのオブジェクトを識別するには、モジュール構造内におけるそのオブジェクトまでのフルパスをドット表記で指定して、「完全修飾」にする必要があります。
    たとえば、GeneXus.SD.Actions.<property|method|event> MyModule.Actions.<property|method|event> とは異なります。
  • モジュールに必要な追加ファイルまたは外部ファイルをパッケージ化するには、 [ Module Resources ] プロパティを設定します。


制限

  • 配布時
    • ルートモジュールのサブモジュールのみパッケージ化することができます (親がルートではないモジュールはパッケージ化できません)。
    • モジュール間の循環依存は許可されていません。
    • モジュールのインターフェースに含めることができるのは、データプロバイダー、プロシージャー、外部オブジェクト、構造化データタイプ、ドメインのみです。
    • [ Translation Type ] プロパティは「No Translation」(既定値) に設定する必要があります。 
  • 対象のナレッジベース上
    • 配布対象のモジュールは、そのモジュールを参照するモジュールと同じ GeneXus バージョンを使用して生成する必要があります。
    • ダウングレード (インストール済みのモジュールの下位バージョンのインストール) は十分にサポートされていません。 
  • モジュールのマーケットプレイスはまだありません。参照モジュールの管理には、ローカルモジュール (%appdata%\Roaming\GeneXus\GeneXus\16\Modules に見つかるもの) しか表示されません。

使用可能バージョン

この機能は GeneXus 15 以降のバージョンで使用可能です。


注: GeneXus 16 Upgrade 5 では、.Net および NetCore ジェネレーター用にデータベースアクセスを伴うモジュールのパッケージ化 (ソリューション拡張シナリオ) の機能が追加されました。

FAQ

Q: 次のような状況が発生した場合、どうなりますか: ナレッジベース "Provider" にオブジェクト A が存在し、そのオブジェクトをナレッジベース "Client" にエクスポートします。その後、ナレッジベース "Provider" のオブジェクト A をモジュール M に組み込み (M.A)、そのモジュールをパッケージ化してナレッジベース "Client" にインストールします。 
A: オブジェクト A の内部 GUID は変更されないため、GeneXus によりすべて解決されます。つまり、次のようになります: オブジェクト A の参照は M.A を指すようになります。A は該当するフォルダからなくなり、KB エクスプローラーの [ 参照 ] の下のモジュール M に追加されます。このモジュールは読み取り専用であり、そのインターフェースのみが使用可能になります。
Q: モジュール内の一部のプロシージャーがパッケージ化されませんでした。なぜでしょうか。
A: モジュール内のオブジェクトをパッケージ化するには、それらのオブジェクトがメインのオブジェクト コール ツリーに含まれている必要があります。そのため、アクセスできないオブジェクトはパッケージ化されません。必要なオブジェクトは必ずメインのオブジェクト コール ツリーに追加してください。これはモジュールの外部のダミープロシージャーにすぎず、この用途でのみ使用されます。



サブページ
Created: 19/03/25 17:56 by Admin Last update: 20/04/30 00:06 by Admin
カテゴリ
Powered by GXwiki 3.0