GeneXus では、モジュールの API とバイナリを配布したり、
モジュールをほかの
ナレッジベースにインストールしたりできます。
このメカニズムを使用して、別のナレッジベースから提供されてインストールしたモジュールには、次の特徴があります:
- モジュールの API のみが公開されます。
- API は読み取り専用です。
- 特定のバージョンの API とその実装 (おそらくいくつかのプラットフォームまたは言語の対応するバイナリ) で構成されます。
これには次の利点があります:
- コードのプライバシーを維持できます。
- 特定のライセンス下でプロバイダーがモジュールの保守を行うため、不要な変更を防止できます。
- ビルドパフォーマンスが向上します (コードは作成元で 1 回だけビルドされます)。
- モジュールを社内で配布したり、リポジトリマネージャ経由で公開したりするのが容易になります。
GeneXus 自体も、このメカニズムを使用して
GeneXus Cognitive API などの
GeneXus コアモジュールを提供します。
次の手順に沿って、モジュールの作成、モジュールの配布、別のナレッジベースへのモジュールのインストールおよび使用について説明します。
まず始めに、特定の機能を持つモジュールを作成し、使用したいプラットフォームでテストを行います。
これについては、「
モジュールオブジェクトを作成する方法」、「
モジュールにオブジェクトを追加する方法」、および「
モジュール - インターフェースの定義」を参照してください。
次に、機能のデスクリプション、ドキュメンテーションへのリンク、およびその他関連情報を追加し、モジュールをパッケージ化して公開します。
これについては、「
モジュールのパッケージ化と公開」を参照してください。
これで、
モジュールサーバーでモジュールを共有できます。
[
参照モジュールの管理 ] ツールウィンドウを開き、モジュールをインストールします。
注: ビルド時には参照モジュールのバイナリがターゲット環境のディレクトリーにコピーされます。
以下はモジュールの API と実装に属することのできるオブジェクトのリストです。
- サービス
- データ
- 構造
- ユーザーインターフェース (デザインシステム)
注: モジュール API の実装によって参照されるビジネスコンポーネントの実装もパッケージ化されます。
[ REST Protocol ] プロパティが True に設定されているプロシージャーの結果として実行される REST サービスと該当する実装は、プロシージャーがパブリックではなくても (
[ Object Visibility ] プロパティが Internal、Private または Knowledge Base に設定されている) パッケージ化されます。これにより、モジュールが使用される場所にかかわらず、デプロイする REST サービスをパッケージ化することができます。
以下の構造を持つナレッジベースがあります:
Root Module
|_ MyModule
|_ ProcedureA (inherit)
|_ InternalModule
|_ ProcedureB (internal, online, REST)
詳細は以下のとおりです:
- ProcedureA が ProcedureB を呼び出します。
- [ Object Visibility ] プロパティは、ProcedureA に対しては Public (公開)、ProcedureB に対しては Internal/Private (非公開) に設定されています。
- [ Connectivity Support ] プロパティは、ProcedureA に対しては Inherit、ProcedureB に対しては Online に設定されています。
- ProcedureB では、 [ Expose as Web Service ] プロパティと [ REST Protocol ] プロパティは True に設定されています。
別のナレッジベースに MyModule をインストールする際は、ネイティブモバイル (Apple、Andorid) 用のオフラインパネル ( [ Connectivity Support ] プロパティ = Offline) が MyModule.ProcedureA を呼び出すと、デバイス上 (つまりオフライン) で実行され、REST 経由で同じアプリケーションのサービスレイヤーを呼び出すことができます。
MSBuild タスクには、タスクの自動化やインストール、公開などに役立つタスクがいくつかあります: 詳細については、「
モジュールの MSBuild タスク」を参照してください。
- パッケージ化するとき
- 対象のナレッジベース上
- 配布対象のモジュールは、そのモジュールを参照するモジュールと同じ GeneXus バージョンを使用して生成する必要があります。
- ダウングレード (インストール済みのモジュールの下位バージョンのインストール) は十分にサポートされていません。
よくある質問
Q: 次のような状況が発生した場合、どうなりますか: ナレッジベース "Provider" にオブジェクト A が存在し、そのオブジェクトをナレッジベース "Client" にエクスポートします。その後、ナレッジベース "Provider" のオブジェクト A をモジュール M に組み込み (M.A)、そのモジュールをパッケージ化してナレッジベース "Client" にインストールします。
A: オブジェクト A の内部 GUID は変更されないため、GeneXus によりすべて解決されます。つまり、次のようになります: オブジェクト A の参照は M.A を指すようになります。A は該当するフォルダからなくなり、KB エクスプローラーの [ 参照 ] の下のモジュール M に追加されます。このモジュールは読み取り専用であり、そのインターフェースのみが使用可能になります。
Q: モジュール内の一部のプロシージャーがパッケージ化されませんでした。なぜでしょうか。
A: モジュール内のオブジェクトをパッケージ化するには、それらのオブジェクトがメインのオブジェクト コール ツリーに含まれている必要があります。そのため、
アクセスできないオブジェクトはパッケージ化されません。必要なオブジェクトは必ずメインのオブジェクト コール ツリーに追加してください。これはモジュールの外部のダミープロシージャーにすぎず、この用途でのみ使用されます。