null Out of Process Extensionの概要

こんにちは。今回はバージョン7から導入されたOut of Process Extensionの概要についてご紹介します。なお、記事執筆時点の23.4の時点の情報になります。

Out of Process Extensionは、名前のとおりAlfrescoの外部で稼働するプログラムを開発して拡張する開発方法です。Alfresco内部で発生した各種イベントをトリガーとして、AlfrescoのREST APIを介して機能を拡張します。それに対して、Alfresco自体にカスタマイズを適用する従来の開発をIn Process Extensionと呼んで区別しています。

Out of Process Extensionについては、以下のページで詳しく紹介されています。

Out-of-Process Extension Points

処理の起点となるイベントには以下のような種類があります。

  • Node Created Event
  • Node Updated Event
  • Node Deleted Event
  • Parent-Child Association Created Event
  • Parent-Child Association Deleted Event
  • Peer Association Created Event
  • Peer Association Deleted Event
  • Permission Updated Event (Enterprise Only)

上記のようなイベントをActiveMQ等のメッセージブローカーを介して捕捉して、例えばノード(主にフォルダやファイル)が更新されたらAlfrescoのREST APIを介して関連データを更新する、あるいは他のシステムのAPIを介してデータを連携する、といったカスタマイズを実装することになります。

以下の公式ページではOut of Process Extensionの利点を次のように紹介しています。

Getting Started

アップグレードが容易

In Process ExtensionでAlfresco内部にカスタマイズを組み込んでいると、Alfrescoをアップグレードする際にそのコードを新しいバージョンに移植する必要があります。Out of Process Extensionでは通常は標準のREST APIとイベントを使用してカスタマイズするため、アップグレードの影響を受けにくくなります。

安定性とセキュリティ

In Process ExtensionでAlfresco内部にカスタマイズを組み込むと、製品の安定性が損なわれる可能性が(Out of Process Extensionで外部で拡張するのに比べて)高くなり、セキュリティ上の脅威に対する保護もより困難になります。

複雑性の低減

Alfrescoの外部でカスタマイズすることで、カスタムコードが製品のコードに及ぼす影響を考慮する必要がなくなるため複雑性が低減します。これまではアップグレード時に製品のコードが変更されることもよくあり、単純なアップグレードはほぼ不可能でした。

開発言語の選択

AlfrescoはJavaで実装されているため、In Process Extensionの場合はJavaで開発する必要があります。Out of Process Extensionでは開発チームに適した他の言語を使用できるため生産性が向上します。

システム停止が不要

In Process Extensionではカスタマイズを適用するためにAlfrescoを再起動する必要があります。Out of Process ExtensionではAlfrescoから完全に独立して適用できるためAlfrescoを停止する必要がありません。

製品サポート

製品サポートを受ける際に、問題が製品のコードにあるのかカスタムコードにあるのかを特定することが難しい場合があります。両者が分離されていれば、問題の所在を特定し、適切な対応を行うことが容易になります。

開発速度

Out of Process Extensionでは、コードを変更した時にAlfrescoを再起動する必要がないためコード変更→テストの繰り返しを高速に行うことができます。これは開発者にとって大きなメリットになります。

以上、Out of Process Extensionの概要についてご紹介しました。カスタムモデルの定義等、In Process Extensionで組み込まなければならないものもあるので全ての要件をOut of Process Extensionで実現することはできないのですが、両者をバランスよく使うことで開発効率や保守性を向上させていくことができるのではないかと思います。

Out of Process ExtensionのためのJavaのSDKも提供されているので、その使い方についても別の記事でご紹介できればと思います。

関連記事
customize

RANKING
2020.10.12
2020.11.19
2020.12.23
2020.10.05
2020.11.25