intra-mart Accel Platform アクセスコンテキスト仕様書 第7版 2018-08-01

3. 概要

この章では、アクセスコンテキストの用途、および、提供する機能の概要について説明します。

3.1. アクセスコンテキストとは

アクセスコンテキストとは、 intra-mart Accel Platform に対して現在アクセスしている処理実行者(以下、利用者)に関連する共有情報を保持するオブジェクトです。
アクセスコンテキストには、利用者が利用しているシステム情報、ログイン情報、アプリケーションなどに関する情報が含まれます。
利用者には、以下の様なアクターが含まれます。
  • ログインユーザなどのブラウザからアクセスしているユーザ
  • ジョブスケジューラ

3.1.1. アクセスコンテキストの概念

アクセスコンテキストの動作イメージは、以下の通りです。
../../_images/overview_concept.png

図 アクセスコンテキストの動作イメージ

intra-mart Accel Platform では、いろいろな種類のアクセスコンテキスト(図の Context AContext C )を定義することができます。
基盤機能やアプリケーション(図の Application 1Application 2 )は、目的に応じて必要なアクセスコンテキストを利用可能です。

3.1.2. アクセスコンテキストの目的

一般的なWebアプリケーションでは、利用者に関連する情報の格納先として、HTTPセッションを利用します。
しかし、HTTPセッションを利用した場合、以下のような問題があります。
  • HTTPセッションはWebアプリケーションに依存するため、ジョブスケジューラによる実行時は利用できません。
  • HTTPセッションはWebアプリケーション内に1つのみであり、それらの情報はシステムやアプリケーションが自由に設定できます。
    そのため、情報を個別に管理することや整合性を保つことができません。
../../_images/overview_purpose_1.png

図 利用者の情報の格納先として、HTTPセッションを利用した場合

これらの問題を解決するため、利用者の情報をアクセスコンテキストとして定義します。
これにより、利用者の情報が1つのオブジェクトとして定義されるため、利用目的や対象とする情報が明確になります。
また、アクセスコンテキストを利用することで、Webアプリケーションを意識することなく利用者の情報を参照することができます。
../../_images/overview_purpose_2.png

図 利用者の情報の格納先として、アクセスコンテキストを利用した場合

3.1.3. アクセスコンテキストの定義

アクセスコンテキストは、利用者のアクセスの開始から終了まで、利用者の情報や状態を保持します。
それらの情報は、システムおよびアプリケーションから自由に参照されます。
利用者のアクセスの開始から終了までの例は、以下のような場合です。
  • ブラウザからのリクエストを受け付けてから、ブラウザにレスポンスを返すまで。
  • ジョブスケジューラにより、ジョブの実行が開始してから、終了するまで。
intra-mart Accel Platform では、いろいろな種類のアクセスコンテキストを定義することができます。
これらの種類を区別する情報をコンテキスト種別と呼びます。コンテキスト種別については、「 コンテキスト種別 」を参照してください。
アクセスコンテキストの情報は、 intra-mart Accel Platform の基盤機能、または、アクセスコンテキストの情報を管理する機能によって設定されます。
それ以外の機能からは参照のみ可能です。

3.1.4. 標準アクセスコンテキスト

intra-mart Accel Platform では、あらかじめいくつかのアクセスコンテキストが定義されています。
これらのアクセスコンテキストを「標準アクセスコンテキスト」と呼びます。
提供されている標準アクセスコンテキストは、以下の通りです。
表 標準アクセスコンテキスト 一覧
アクセスコンテキスト名 説明
アカウントコンテキスト
アクセスしたユーザアカウントに関連する情報を保持します。
ユーザコードやロケールなどのアカウント情報、認証状況などを取得できます。
システムで必須のアクセスコンテキストであり、 intra-mart Accel Platform 上で常に取得可能なアクセスコンテキストです。
詳細は、「 アカウントコンテキスト 」を参照してください。
クライアントコンテキスト
アクセスしたクライアントに関連する情報を保持します。
アクセスに利用した端末をクライアントタイプとして取得できます。
クライアントタイプには「PC」「スマートフォン」などがあります。
ユーザコンテキスト
ユーザのプロファイル情報や所属組織情報など、IM-共通マスタに紐づく情報を保持します。
詳細は、「 ユーザコンテキスト 」を参照してください。
認可サブジェクトコンテキスト
認可処理に関するサブジェクトの情報を保持します。
認可処理で利用され、ユーザが直接利用する必要はありません。
詳細は、「 認可仕様書 」の「 認可サブジェクトコンテキスト 」を参照してください。
ジョブスケジューラコンテキスト
ジョブやジョブスケジューラに関する情報を保持します。
ジョブやジョブネットに登録された情報や実行パラメータが取得できます。
ジョブ実行時のみ利用可能なアクセスコンテキストです。

3.1.5. ユーザの分類

アクセスコンテキストは利用者の状態を保持しています。
アクセスコンテキストの状態に基づいて、以下の通りにユーザが分類されます。
表 ユーザの分類一覧
未認証ユーザ ログインしていないユーザを表します。
ログインユーザ 一般ユーザとしてログインしたユーザを表します。
システム管理者 システム管理者としてログインしたユーザを表します。
プラットフォームユーザ
基盤機能で利用する特別なユーザを表します。
ジョブの実行時は、このユーザとして実行されます。
ユーザの分類は、「 アカウントコンテキスト 」の情報に基づいて行われます。
アプリケーションでは、ユーザの分類の判定が必要な場合があります。
そのような場合は、「 アカウントコンテキスト 」-「 ユーザの分類 」の情報を参照して判定を行います。

3.2. アクセスコンテキストの実行環境

3.2.1. 実行環境

実行環境とは、アクセスコンテキストを利用可能な環境を表します。
実行環境は、それぞれ利用者のアクセスの開始から終了までを表すライフサイクルを持っています。
ライフサイクルとは、アクセスコンテキストの生存期間です。
ライフサイクルについては、「 ライフサイクル 」を参照してください。
1つの実行環境には、あらかじめ定義された複数の種別のアクセスコンテキストが存在します。
ライフサイクル中は定義されたアクセスコンテキストを自由に利用することができます。
intra-mart Accel Platform では、通常利用される標準の実行環境が定義されています。
標準の実行環境の開始と終了処理は、基盤機能にて実行されるため、利用者が意識する必要はありません。
intra-mart Accel Platform で定義されている実行環境は、以下の通りです。
  • Web実行環境

    HTTPを利用したリクエストで開始するライフサイクルを持つ実行環境です。
    HTTPセッションにアクセスコンテキストをキャッシュすることで、ユーザ情報をログインからログアウトまで保持します。
  • ジョブ実行環境

    ジョブスケジューラから起動されるライフサイクルの実行環境です。
    ジョブスケジューラについては、「 ジョブスケジューラ仕様書 」を参照してください。
  • 非同期実行環境

    別スレッド実行時に開始されるライフサイクルの実行環境です。
    intra-mart Accel Platform で提供する標準の非同期処理では、非同期処理実行元の実行環境がコピーされます。
    そのため、実行元と同じアクセスコンテキストを参照することができます。
    非同期処理については、「 非同期仕様書 」を参照してください。
  • システム実行環境

    システム用の特別な実行環境です。
    この実行環境のライフサイクルは、Webアプリケーションと同一で、システム稼働中は常に参照することができます。
    この実行環境ではシステムデフォルトのアクセスコンテキストが管理され、その他の実行環境がライフサイクル外の場合に参照されます。
それぞれの実行環境のライフサイクルについては、「 ライフサイクル 」を参照してください。
上記以外の実行環境を利用するためには、独自にライフサイクルを開始する必要があります。
例えば、intra-mart Accel Platform で提供する標準の非同期処理を利用せずにスレッドを作成して処理を実行したい場合です。
その場合は、ライフサイクルを定義し、必要なアクセスコンテキストの生成処理の実装が必要となります。

3.2.2. 標準アクセスコンテキストの実行環境

標準アクセスコンテキストが利用可能な実行環境は、以下の通りです。
表 標準アクセスコンテキストが利用可能な実行環境
アクセスコンテキスト名 Web実行環境 非同期実行環境 ジョブ実行環境 システム実行環境
アカウントコンテキスト
クライアントコンテキスト ×
ユーザコンテキスト ×
認可サブジェクトコンテキスト ×
ジョブスケジューラコンテキスト × × ×

3.2.3. 切替

アクセスした状態によりアクセスコンテキストは自動で生成されますが、ユーザの操作やプログラムによってアクセスコンテキストの状態を変更したい場合があります。
アクセスコンテキストは共有情報であるため、任意のアクセスコンテキストの情報を直接変更すると、不整合が発生する可能性があります。
そのため、特別なアクセスコンテキストの変更機能を定義して呼び出すことで、整合性を保ったまま変更するようにします。
この変更機能を、アクセスコンテキストの切替機能と呼びます。
切替機能は、その目的により以下の通りに分類されます。
  • コンテキストスイッチ

    以前のアクセスコンテキストは破棄され、新しいアクセスコンテキストが生成されて利用されます。
    新しいアクセスコンテキストで、継続してアクセスしたい場合に利用されます。
    例えば、複数の組織に所属しているユーザが、主所属ではない組織のユーザとしてアクセスしたい場合、コンテキストスイッチにより、所属組織を切り替えます。
    実行イメージは、以下の通りです。
    図中の「Context SWITCH」により、コンテキストスイッチが実行されます。
    ../../_images/overview_switch.png

    図 コンテキストスイッチの処理イメージ

  • コンテキストスタック

    以前のアクセスコンテキストは一時的に退避され、新しいアクセスコンテキストが生成されて利用されます。
    新しいアクセスコンテキストの利用が終わった場合、任意のタイミングで以前のアクセスコンテキストに戻ることができます。
    一時的に別のアクセスコンテキストでアクセスしたい場合に利用されます。
    例えば、スマートフォンでアクセス時に、特定の画面のみPC用の画面を表示したい場合は、コンテキストスタックにより、一時的にアクセスしたクライアント情報を切り替えます。
    別の画面を表示した場合は、アクセスコンテキストが以前の状態に戻っているため、スマートフォン用の画面が表示されます。
    実行イメージは、以下の通りです。
    図中の「Context STACK」により、コンテキストスタックが実行され、「Context POP」により、以前のアクセスコンテキストに戻ります。
    ../../_images/overview_stack.png

    図 コンテキストスタックの処理イメージ

切替処理の詳細については、「 切替 」を参照してください。