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

4.6.1. アカウントコンテキスト

4.6.1.1. 概要

アカウントコンテキストとは、アカウントに関する情報を保持するアクセスコンテキストです。
ユーザコードやロケールなどのアカウント情報、認証状況などを取得できます。
intra-mart Accel Platform 上で常に利用可能です。

アカウントコンテキストを利用する場合、AccountContext の APIドキュメントを参照してください。

4.6.1.2. プロパティ

アカウントコンテキストのプロパティは以下の通りです。
表 アカウントコンテキストのプロパティ一覧
プロパティ名 説明
テナントID
現在の操作対象のテナントIDです。
アクセスしているユーザに応じたテナントIDが取得されます。
システム起動時などのユーザに依存しない処理の場合は、null が取得されます。
ユーザ種別
現在アクセスしているユーザの種別を取得します。
ユーザ種別は、以下の種類があります。
  • 一般ユーザ

    ログインユーザおよび未認証ユーザです。
  • システム管理者

  • プラットフォームユーザ

    システムで利用するユーザです。
    ジョブの実行ユーザは、プラットフォームユーザです。
ユーザコード
現在アクセスしているユーザのユーザコードです。
ログインしていない場合や、プラットフォームユーザの場合は、システムで定義された固定のユーザコードが使用されます。
認証状況
ログインしているかどうかを表します。
プラットフォームユーザはログインを行わないため、未認証です。
ロケール
現在アクセスしているユーザが利用するロケールです。
文字エンコーディング
現在アクセスしているユーザが利用する文字エンコーディングです。
UTF-8 のみをサポートするため、常に UTF-8 が設定されます。
タイムゾーン
現在アクセスしているユーザが利用するタイムゾーンです。
日時表示形式一覧
現在アクセスしているユーザが利用する日時表示形式情報一覧です。
週の開始曜日
現在アクセスしているユーザが利用する週の開始曜日情報です。
カレンダーID
現在アクセスしているユーザが利用するカレンダーのカレンダーIDです。
テーマID
現在アクセスしているユーザが利用するテーマのテーマIDです。
ホームURL
現在アクセスしているユーザが利用するホームURLです。
ログイン時刻
現在アクセスしているユーザがログインした時刻です。
ログインしていない場合は、null が取得されます。
ログイン署名
現在アクセスしているユーザのログイン署名情報です。
ログインしていない場合は、null が取得されます。
ロールID一覧
現在アクセスしているユーザのロールID一覧です。サブロールも含まれます。
ログインしていない場合、または、システム管理者の場合は、null が取得されます。
アプリケーションライセンス一覧
現在アクセスしているユーザが保持するアプリケーションライセンス一覧です。
ログインしていない場合、または、システム管理者の場合は、null が取得されます。
数値形式のフォーマットID
現在アクセスしているユーザが利用する数値形式のフォーマットIDです。

注意

  • 「テナントID」は intra-mart Accel Platform 2014 Spring(Granada) 以降で利用可能です。
  • 「数値形式のフォーマットID」は intra-mart Accel Platform 2016 Winter(Olga) 以降で利用可能です。

4.6.1.2.1. テナントIDについて

テナントIDは、 バーチャルテナントによる複数テナント を利用している場合の処理対象のテナントIDが設定されます。
この値は、「 テナント解決機能 」により、自動的に解決されます。
また、intra-mart Accel Platform が提供するAPIの内部で利用されるため、開発者が直接利用する必要はありません。

4.6.1.3. ステータス遷移

アカウントコンテキストはアクセスしているユーザの状態(ステータス)を保持するアクセスコンテキストで、特定の処理によってステータスが変更されます。
アカウントコンテキストのステータス変更は「 切替機能 」を利用して実現されます。
アカウントコンテキストのステータス変更処理は実行環境ごとに定義されますが、標準では、Web実行環境のステータス変更処理のみ定義されています。

4.6.1.3.1. Web実行環境のステータス

Web実行環境での初回アクセス時は、必ず未認証ユーザのアカウントコンテキストが作成されます。
標準で定義されているアカウントコンテキストのステータス変更処理は以下の通りです。
  • ログイン

    未認証ユーザをログイン状態に変更します。
    ユーザの情報を読み込んで各プロパティが設定されます。
    また、ログイン時刻・ログイン署名が設定されます。
  • ログアウト

    ログインユーザを未認証状態に変更します。
    テナント情報から未認証用の情報を読み込んで各プロパティが設定されます。
    また、ログイン時刻・ログイン署名がクリアされます。
  • ユーザ情報更新

    ログインユーザのユーザ情報を最新化します。
    アカウントコンテキストの情報は、キャッシュ機構によりHTTPセッションにキャッシュされるため、データベースの情報を更新しただけでは、アカウントコンテキストには反映されません。
    ログイン状態を維持したまま、アカウントコンテキストの情報を最新化するためには、ユーザ情報更新処理を実行する必要があります。
    また、同時にアカウントの有効期限、ライセンス等がチェックされるため、この処理の結果、未認証状態になる場合があります。
アカウントコンテキストのステータス遷移は以下の通りです。
../../../_images/account_context_status.png

図 アカウントコンテキストのステータス遷移

4.6.1.3.1.1. プロパティの解決順序

アカウントコンテキストの情報は、ユーザの種別によらず定義された解決順序によって適切な値が取得できます。
一般ユーザの場合の、ユーザごとに設定が可能なプロパティの解決順序は、以下の通りです。
../../../_images/account_context_resolve.png

図 アカウントコンテキストの各プロパティの解決順序(一般ユーザ)

例えば、一般ユーザがロケールを取得する場合、以下の解決順序によって必ず値が取得できます。
  1. アカウント情報に設定された個人設定のロケール
  2. ブラウザからアクセスする際に設定されたロケール
  3. テナント情報に設定されたテナントのロケール
  4. システムに設定されたデフォルトのロケール
この解決順序により、ログインしていない未認証ユーザの場合でも、必ずロケールが取得できます。

コラム

intra-mart Accel Platform 2018 Summer(Tiffany) で、プロパティの解決順序が変更されました。
  • 変更前(2018 Spring(Skylark) 以前)
    1. アカウント設定
    2. テナント設定
    3. ブラウザ
    4. システム設定
    5. 環境設定
  • 変更後(2018 Summer(Tiffany) 以降)
    1. アカウント設定
    2. ブラウザ
    3. テナント設定
    4. システム設定
    5. 環境設定
2018 Summer(Tiffany) 以降で 2018 Spring(Skylark) 以前と同様のプロパティの解決順序を使用したい場合は、設定を変更してください。
設定については、「設定ファイルリファレンス」の「ブラウザロケールデコレータ設定」を参照してください。

4.6.1.3.2. ジョブ実行環境のステータス

ジョブ実行環境では、ジョブネット起動時にジョブネットの登録情報を利用してアカウントコンテキストが作成されます。
標準で定義されているステータス変更処理はありません。
ジョブネット起動時にアカウントコンテキストに設定される主なプロパティは、以下の通りです。
表 ジョブ実行環境のアカウントコンテキスト
テナントID ジョブネット起動時のテナントID
ユーザ種別 プラットフォームユーザ
ユーザコード 固定値: im_job
ログイン時刻 ジョブネット起動時刻
ロール、アプリケーションライセンス null
その他のプロパティは、テナントの情報が設定されます。

4.6.1.4. ユーザの分類

intra-mart Accel Platform では、アカウントコンテキストの「ユーザ種別」と「認証状況」に基づいてユーザの分類が行われます。
ユーザの分類の判定方法は以下の通りです。
  • 未認証ユーザ

    ユーザ種別が「一般ユーザ」、かつ、認証状況が「未認証」。
  • ログインユーザ

    ユーザ種別が「一般ユーザ」、かつ、認証状況が「認証済み」。
  • システム管理者

    ユーザ種別が「システム管理者」。
    認証状況は、常に「認証済み」です。
  • プラットフォームユーザ

    ユーザ種別が「プラットフォーム」。
    認証状況は、常に「未認証」です。

4.6.1.5. キャッシュタイムアウト

アカウントコンテキストのWeb実行環境でのキャシュタイムアウト判定の設定は、session-user-daily です。
キャッシュタイムアウト判定については、「 キャッシュタイムアウト判定 」を参照してください。
ユーザのタイムゾーンを基準として日付が変わった場合、キャッシュタイムアウトとなり、アカウントコンテキストの情報を最新化します。
このため、セッションタイムアウトを設定せずに運用した場合、ログイン状態のままでも、日付が変わったタイミングでアカウントコンテキストの情報が最新の情報に変更される可能性があります。
また、同時にアカウントの有効期限、ライセンス等がチェックされるため、日付変更後のアクセスにより、未認証状態になる場合があります。