OutSystems Platformでコードを再利用することができますか?

はい。OutSystems Platformで構築したアプリケーションは、「検索と適用」の仕組みが使えるように作成されたコードを共有し、再利用することができます。再利用性はすべてのレイヤー(UI、ビジネスロジック、およびデータベースで利用可能です。また、多くの理由から、OutSystemsではコードの再利用の方が適しています。 

検索と適用

アプリケーションのモジュールを定義するビジュアルモデル内で、オブジェクトは「Public」プロパティを持っています。これは、複数のアプリケーションでオブジェクトの検索と適用を使えるようにするプロパティです。以下は、「Public」プロパティを持つアクションの例です。

 「Public」プロパティを持つオブジェクトを開発環境から見ることができます。



UI

他のOutSystemsアプリケーションで再利用するため、開発者はUIレベルでさまざまなコンポーネントを公開することができます。

ウェブブロック

この再利用可能なUI要素は、以下のような相互に排他的でないさまざまな目的を持っています。

  • データ入力、ユーザーインターフェイス、イベント、および通知の機能を持つ自己完結型ウィジェットとして動作する。顧客情報を更新し、単一または複数のアプリケーションの複数ページで使われる顧客データサマリーがその例です。
  • JavaScriptおよびCSS機能のパッケージ化を行う。OutSystemsアプリケーションでマップを使用する機能を公開するためにGoogle Maps APIを使ったGoogleマップコンポーネントがその例です。
  • スタイル、プレースホルダー、および機能を持ったテーマレイアウトページとして使用する。例えば、OutSystemsに内蔵されたテーマに、ウェブ、電子メール、およびポップアップなどの異なる画面の異なるレイアウトを公開する際に、こうしたウェブブロックが使用されます。

テーマ

テーマはCSSを公開しているため、テーマを再利用するとき、それを利用するアプリケーションはテーマのスタイルシートを継承し、そのスタイルシートで設定をローカルに上書きすることができます。OutSystemsに内蔵されたテーマも同様に、再利用とカスタマイズが可能です。

ページ

制御をナビゲートまたはリダイレクトする方法として、再利用のためにウェブ画面を公開することができます。同一ポータルの複数のモジュールで使用する共通のログインページがその例です。


ビジネスロジック

OutSystems Platformを用いて記述したいずれのビジネスロジックのブロックも、そのロジックが同じモジュールおよびアプリケーションの中で再利用されているか、あるいは複数のアプリケーション間で再利用されているかにかかわらず、他のいずれのビジネスロジック機能、ビジネスプロセスオーケストレーション、ウェブ画面、モバイル画面、または非同期ジョブで使用することができます。

単一のアプリケーションで利用可能なロール:

ダッシュボードへアクセス可能なロール:

 

ロジックの表現においてユーザインターフェース要素およびビジネスルールを制御するのによく使われるロールのコンセプトは、複数のアプリケーション間で共有することができます。例えば、ユーザーに割り当てられる管理者というロールは、別のアプリケーションでは別の権限を与えられることがありますが、ユーザー管理という観点では一つの同じロールなのです。

ウェブサービスの公開も機能を共有する方法ですが、複数のOutSystemsアプリケーションに対してだけではなく、分離された状態でウェブサービスを使用することのできる外部アプリケーションに対しても利用できる点が異なります。

データベース

OutSystems Platformにより設計とデプロイが行われたすべてのデータベーステーブル(エンティティ)は、「public」としてマーキングされ、他のどんなアプリケーションでも再利用することができます。データは読み出し専用として共有可能であり、その場合はデータを利用するアプリケーションから特定のテーブルへの書き込みはできません。また、読み出し/書き込みとも可能なアクセス設定で共有することもでき、その場合はデータを利用するアプリケーションには当該データに対するフルコントロール権限が与えられます。

例えば、複数のアプリケーション間で使用される単一のユーザテーブルを、マスターデータの整合性確保のために使用するといった使い方が一般的です。

ユーザデータを分離するモジュールの例:

他のモジュールからユーザデータを使用する例:



OutSystems Platformは標準的なデータベーステクノロジー(Microsoft SQL Server、Oracle、MySQL)を用いてデータスキームのデプロイを行うため、オンプレミス環境でも外部システムに上記データベースの読み出しや書き込みを実行させることが簡単です。これは、プラットフォームが生成した中間生成物を外部アプリケーションが共有、再利用するシナリオです。

メモリーデータ構造の定義の中にも、複雑な補助データタイプの整合性を確保するため、複数のアプリケーション間で共有可能なコンポーネントがあります。

OutSystemsを使うとコードが再利用しやすくなる理由

コード再利用に関してOutSystemsが他と異なるのは、OutSystems Platformsでは、ガバナンス、アプリケーション間の依存関係ネットワークに関するユーザーの理解を補助するレポート、および変更による影響の分析機能が提供されているからです。

ガバナンス

コードの再利用は非常に有用ですが、制御下で行えるならばさらに有用性が高まります。

OutSystems Platformは、特定の環境下で特定のアプリケーションと一緒に特定のタスクを実行するロールを管理することができます。この仕組みを利用すると、各アプリケーションによって公開された共有コンポーネントに対してアクセス可能なユーザーまたはチームを設定することができます。

開発者の権限設定の例:

上級開発者の権限設定の例:

 

依存関係ネットワークの理解

OutSystems Platformのコンソールでは、アプリケーション間の依存関係ネットワークを参照し、理解するためのレポートを表示することができます。アプリケーション間の依存関係やモジュール間の依存関係など、さまざまな粒度でレポートを作成できます。

アプリケーション間およびモジュール間の依存関係マップ:

また、OutSystems Platformはオープンなプラットフォームなので、拡張することにより、OutSystems Forgeから入手可能なアーキテクチャ解析ツールのように、アプリケーション間の相互関係をより正確に示してくれるコンポーネントを追加作成することができます。

影響分析

OutSystems Platformには、特定モジュールに対してパブリッシュ時に加えられた変更の影響を即座に視覚化する機能が備わっています。以下は、依存関係解析グラフの例です。

開発者は、どのモジュールまたはアプリケーションが影響を受けるのか、修正が必要なのか、それとも単なる再コンパイルだけでいいのかを、リアルタイムにビジュアル表示で確認することができます。

以下は、参照が壊れているためにデプロイを中止した例です。

複数の環境に対してアプリケーションを発行すると、コードの再利用の観点から必要な依存関係をすべて特定し、パッケージ化してくれるだけでなく、異なるバージョンが既にデプロイされている可能性のある別の環境にそのコードを持ち込むことによる影響を分析してくれます。