OutSystems11新機能(2) Service

今更ですが、OutSystems11の新機能である、Service Actionの動作を確認してみます。

OutSystems11で、Web、Mobile、Extensionに続く新しいModuleの種類としてServiceが追加されました。

これまでのOutSystems開発では、ライブラリとして提供した機能の実装を変更すると、(インターフェースを変更しなくても)参照側のモジュール側で参照の更新が必要でした。

Service Moduleは、モジュール間の結合度が低いAction(Service Action)を提供できるモジュールです。

Service Actionの概要

Service Actionは、OutSystems内ではServer Actionと同じように別のScreen ActionやServer Actionから呼べますが、内部的にはREST APIとしてURLベースで呼び出されます。

RESTベースなので、配置先モジュールとの結合度が弱くなるわけですね。RESTベースであるため、プロセス内で起動するServer Actionに比べるとオーバーヘッドがあります。

Service StudioでService Moduleを開くと、Logicタブ内にService Actionsというフォルダがあります。

このフォルダを右クリックして、「Add Service Action」でService Actionを作成できます。作り方は他の要素と同じですね。

入力パラメータをServer Action(昔からある普通のAction)と比較してみると、

Server Actionにはあった、Public、Function、Cache in Minutesがありません。

Public(他のモジュールに公開するか)はService Actionの性質上必ず公開されるため、Function(OutSystemsのExpressionなどで式の一部として呼べる用にするか)、Cache in Minutes(Action結果をキャッシュしておく時間)はRESTベースであるために無いのだと思います。

Service Actionの更新を試してみる

以下のような構成のモジュール群を用意して、Core Layer(図ではService Moduleと記載)を変更したときに、参照側モジュールの更新が必要になるか確認しましょう。

Service Moduleには、Server ActionとService Actionが1つずつあり、Web1は両方Web2はService Actionだけを参照しています。

この状態で、Service Module内のServer ActionとService Actionの実装(Output Parameterの値)を変更してみると(Modulesでのモジュール表示の比較)、

Service Actionのみを参照しているWeb2のモジュールは参照の更新を必要としないのに対して、Server Action(普通のAction)を参照しているWeb1のモジュールは参照がoutdatedと見なされます。

ちなみに、Web1(参照の更新を必要とする方)であっても、Service Actionの変更は即反映されます。つまり、参照を更新せずとも更新後の新しい実装で動作する。

ログ

Service Centerの、Monitoring>Service ActionsにService Action呼び出しのログが出力されます。RESTのログに似てますが、ログレベルの設定はなさそう。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする