アルゴリズムの全体像

システムの多くの機能はアルゴリズムを使用して実行されます。アルゴリズムは、システム処理内の戦略的ポイント(多くの場合"プラグイン・スポット"と呼ばれる)で特定のコードを実行するためにコールされます。プラグイン・スポットは製品に事前構成され、オブジェクトごとに異なります。基本製品ではそのまま使用できる機能を提供するためにアルゴリズムが使用されます。ベースとして提供されるコードのかわりに、またはそれに加えて使用できる実装独自のカスタム・コードを挿入する手段が、アルゴリズム・フレームワークによって提供されます。

注意: アルゴリズム = プラグイン。プラグインとアルゴリズムという用語は、このドキュメント全体を通して互換性のある用語として使用します。

アルゴリズム・タイプとアルゴリズムの違い

システムに関してはアルゴリズムのみが話題になることが一般的ですが、実際には次の2つの重要なオブジェクトによってこのプラグイン機能が提供されます。

  • 「アルゴリズム・タイプ」によってプラグイン・スポットが定義されます。さらに、実行するプログラムが定義されます。このプログラムは、Javaを使用して、またはプラグイン・スクリプトを使用して定義できます。アルゴリズム・タイプにより、このタイプのアルゴリズムに渡す必要のあるパラメータも定義されます。
  • 「アルゴリズム」は、「アルゴリズム・タイプ」のインスタンスです。アルゴリズム・タイプでパラメータが何も定義されていない場合は、そのアルゴリズム・タイプのアルゴリズムは1つのみとなります。アルゴリズムでパラメータが定義されている場合は、1つのアルゴリズム・タイプに対して複数のアルゴリズムが存在する可能性があります(1つのユース・ケースに対するパラメータ値の一意のセットごとに1つ)。このアルゴリズムは、システムの構成時に指定の管理表上で参照されるオブジェクトです。

アルゴリズム・プラグイン・スポット

プラグイン・スポットは、アルゴリズム・エンティティおよびシステム・イベントとも呼ばれ、実行されるアルゴリズムのための機能の様々な面がこれによって定義されます。
  • このプラグイン・スポットのアルゴリズムがシステム処理の中でいつ実行されるか。たとえば、「インストール・オプション - 作業予定作成前」のアルゴリズムがコールされるのは、作業予定の追加時であり、データベースへのなんらかの挿入が実行される前です。

  • プラグイン・スポットのAPI。これは、多くの場合、プラグイン・スポットの"ハード・パラメータ"と呼ばれます。コールされたときにすべてのアルゴリズムにどのような情報が提供されるか。さらに、アルゴリズムがコール元に情報を返すことが想定されている場合は、これもハード・パラメータの一部になります。たとえば、「インストール・オプション - 作業予定作成前」というプラグイン・スポットは、追加しようとしている作業予定に関するすべての情報を受け取ります。値を追加または更新できます。必要に応じて、作業予定を作成しないという指定を返すこともできます。
    注意: ハード・パラメータは、アルゴリズム・タイプに対して定義されるパラメータとは別のものです。これらは"ソフト・パラメータ"と呼ばれます。これらのパラメータは、アルゴリズム・タイプ・コードの固有の機能に使用される設定を構成するために使用されます。
  • プラグイン・スポットに対してアルゴリズムがどのような責任を担うか。プラグイン・スポットを定義するときに、そのスポットに対して作成されるアルゴリズム・タイプのコードの責任が製品によって定義されます。たとえば、そのアルゴリズムが情報を決定してその情報を返すかどうかです。または、更新を実行すると想定されるかどうかです。「インストール・オプション - 作業予定作成前」というプラグイン・スポットのアルゴリズムでは、いかなる更新も実行してはなりません。かわりに、ハード・パラメータ内の作業予定情報を調整し(必要であれば)、その情報を返す必要があります。コール側のロジックでは、その調整された情報を作業予定レコードの挿入時に使用します。

  • アルゴリズムをどこで構成するか。これまで、「インストール・オプション - 作業予定作成前」というプラグイン・スポットを例として使用してきました。摘要が示すように、これらのアルゴリズムは「インストール・オプション - アルゴリズム」コレクション上で構成されます。各プラグイン・スポットによって、アルゴリズムがどこに(どの管理表上に)プラグインされるかが定義されます。使用可能なプラグイン・スポットを定義する「アルゴリズム・エンティティ」フラグ値の摘要のシステム標準は、"管理表名 - イベント"です。たとえば、「作業予定タイプ - 優先度の計算」というアルゴリズム・プラグイン・スポットは、アルゴリズムが「作業予定タイプ」に対して構成されることを意味します。この情報は、アルゴリズムの粒度も示します。「インストール・オプション」のアルゴリズムはシステム全体が対象です。ただし、たとえばアルゴリズムが「作業予定タイプ」にプラグインされる場合は、その作業予定タイプの作業予定登録に対してのみそのアルゴリズムが実行されます。

  • 複数のアルゴリズムが許可されるかどうか。プラグイン・スポットの中には、複数のアルゴリズムをサポートする意味がないものもあります。この例の1つが「バッチ管理 - レコードの選択」プラグインです。このプラグインはプラグイン主導のバッチ・プロセスで使用され、処理されるレコードを選択する責任を担います。このタイプのアルゴリズムは、1つのバッチ管理に対して1つのみ許可されます。複数のアルゴリズムをサポートするプラグイン・スポットの例としては、検証プラグイン・スポットがあります。プラグイン・スポットが複数のアルゴリズムをサポートしているときは、そのプラグイン・スポットの設計にその他の側面も存在する可能性があることに注意してください。

    • 場合によっては、このタイプのプラグイン・スポットは単に各アルゴリズムを実行します。検証プラグイン・スポットはこの例の1つです。

    • 場合によっては、アルゴリズムからプラグイン・スポットの'ドライバ'に、後続のアルゴリズムを一切実行しないという指定が返されることがあります。「ビジネス・オブジェクト・ステータス - 開始」は、この機能をサポートするプラグイン・スポットの例です。

    • 場合によっては、プラグイン・スポットによって、あるアルゴリズムから次のアルゴリズムへの情報の共有がサポートされることがあります。「移行計画 - 事前比較」は、この機能をサポートするプラグイン・スポットの例です。

各プラグイン・スポットは、「アルゴリズム・エンティティ」参照(ALG_​ENTITY_​FLG)の中で定義されます。アルゴリズム・タイプを定義するとき、またはプラグイン・スクリプトを定義するときは、アルゴリズム・エンティティ値を選択すると、ヘルプ・アイコンが表示されます。このアイコンをクリックすると、プラグイン・スポットの説明が表示されます。そのプラグイン・スポットに関するその他の情報がオンライン・ヘルプに表示されることもあります。特定のプラグイン・スポットに対して定義されているハード・パラメータを表示するには、追加モードで「スクリプト」ページに移動し、プラグインのスクリプト・タイプおよび目的のアルゴリズム・エンティティ参照値を選択します。次に、「データ領域」タブに移動します。「プラグイン・スクリプト・データ領域の表示」リンクをクリックすると、ハード・パラメータが表示されます。

基本製品のアルゴリズム

基本製品では、すぐに利用できる多数のアルゴリズム・タイプとアルゴリズムが提供されています。お客様が必要とすることが判明している一般的なユース・ケースをサポートするためのアルゴリズムが提供されることもあります。ただし、多くのアルゴリズムは、システム機能の実装に使用されるインフラストラクチャおよび機能が、実装独自のカスタム・コードのために使用されるものと同じという理由で提供されています。

あるアルゴリズム・タイプが提供されるときに、アルゴリズムも提供するかどうかの決定は、そのアルゴリズム・タイプに対してソフト・パラメータが定義されているかどうかに関連する要因によって異なります。

  • そのアルゴリズム・タイプに対してパラメータが定義されていない場合は、対応するアルゴリズムも提供されることが一般的です。

  • パラメータが定義され、かつ値が通常は実装によって所有される構成データ上にある場合、基本アルゴリズムが提供される可能性は低くなります。

  • パラメータが定義され、かつ値が構成データに依存しない場合は、1つ以上のアルゴリズムが提供される可能性があります。

製品とともに提供されるアルゴリズム・タイプを確認するには、「アルゴリズム・タイプ」問合せに移動します。この問合せには様々な検索オプションがあり、これにはアルゴリズム・エンティティ参照値による検索も含まれています。