intra-mart Accel Platform スクリプト開発モデル プログラミングガイド 第15版 2018-08-01

プログラミング方法

ここでは、アクセスコンテキストの簡単な利用方法について説明します。
新しいアクセスコンテキストを作成する方法、および、アクセスコンテキストの詳細な利用方法については、「 アクセスコンテキスト 拡張プログラミングガイド 」を参照してください。

アクセスコンテキストの基本的な利用方法

アクセスコンテキストを取得するためには、 Contexts API を利用します。
利用したいアクセスコンテキストの種別の短縮名を確認し、以下の方法で取得してください。
Contexts.get<短縮名>()
アクセスコンテキストの情報はプロパティとして登録されますので、以下の方法で取得してください。
context.<プロパティ名>
以下にアクセスコンテキストを取得する例を示します。
// アカウントコンテキストを取得する。
var accountContext = Contexts.getAccountContext();

// ユーザコードを取得する。
var userCd = accountContext.userCd;

// ユーザコンテキストを取得する。
var userContext = Contexts.getUserContext();

アカウントコンテキストの状態アクセスユーティリティ

よく利用される機能として、アカウントコンテキストの認証状況などを問い合わせることがあります。
そのためには、アカウントコンテキストの情報を問い合わせるためのユーティリティを利用できます。
// 認証状況を問い合わせる
var authenticated = ContextStatus.isAuthenticated();

if (authenticated) {
 // 認証済みユーザの処理
} else {
 // 未認証ユーザの処理
}

認証状況を問い合わせる

ログインしているかどうかは、以下のいずれかの方法により確認することができます。
  • アカウントコンテキストの認証状況を問い合わせる。
var accountContext = Contexts.getAccountContext();
var authenticated = accountContext.authenticated;
  • ユーティリティを利用して認証状況を問い合わせる。
var authenticated = ContextStatus.isAuthenticated();
intra-mart Accel Platform では、ログインしていないユーザの場合も、ユーザコードが設定されています。
このユーザコードは、ログやデータベースの更新者等、アプリケーションに影響がない範囲で利用されることを想定しています。
ログインしているかどうかは、必ず上記の方法で確認してください。

ユーザ種別を問い合わせる

アクセスしているユーザが、一般ユーザなのか、または、システム管理者なのかは、以下のいずれかの方法により確認することができます。
  • アカウントコンテキストのユーザ種別を取得する。
var accountContext = Contexts.getAccountContext();
var userType= accountContext.userType;

// システム管理者かどうか
var isAdministrator = "administrator" == userType;

// 一般ユーザかどうか
var isUser = "user" == userType;
  • ユーティリティを利用してシステム管理者かどうかを問い合わせる。
var isAdministrator = ContextStatus.isAdministrator();
未認証ユーザの場合もユーザ種別は一般ユーザです。

定義済みアクセスコンテキストの利用方法

アカウントコンテキストを利用する

以下にアカウントコンテキストからユーザロケールを取得する例を示します。
var accountContext = Contexts.getAccountContext();
var locale = accountContext.locale;

// メッセージを取得する。
var message = MessageManager.getLocaleMessage(locale, "I.IWP.CERTIFICATION.SECURITYLOG.00200")
Debug.print('メッセージ = ' + message);
アカウントコンテキストのロケールは、アカウント情報にロケールが設定されていない場合テナントのロケールが取得できます。
個人設定でロケールを変更し、ロケールが変更されることを確認してみてください。
多くのAPIでは、引数を省略することでアカウントコンテキストの情報を参照するようになっています。
上記の例は、以下のコードと同じ結果になります。
// メッセージを取得する。
var message = MessageManager.getMessage("I.IWP.CERTIFICATION.SECURITYLOG.00200")

ユーザコンテキストを利用する

以下にユーザコンテキストからプロファイル情報を取得する例を示します。
var userContext = Contexts.getUserContext();

// ユーザ名を取得します。
var userName = userContext.userProfile.userName;
このコードにより、現在アクセスしているユーザのユーザ名が取得できます。
未認証ユーザの場合は「ゲスト」が取得できます。
また、ユーザコンテキストからカレント組織を取得する例を示します。
var userContext = Contexts.getUserContext();

var department = userContext.currentDepartment;
if (!isBlank(department)) {
   var departmentName = department.departmentFullName;
   Debug.print('カレント組織名 = ' + departmentName);
}
このコードにより、現在アクセスしている組織のフル名称が取得できます。
複数の所属先を持つユーザの場合、ヘッダのユーザ名をクリックして所属組織を切り替えることで、取得できる名称も変わりますので、確認してみてください。

ユーザコンテキストの所属組織を切り替える

以下にプログラムからユーザコンテキストの所属組織を切り替える例を示します。
var resource = {
    currentCompanyCd : companyCd,
    currentDepartmentSetCd : departmentSetCd,
    currentDepartmentCd : departmentCd
};
Lifecycle.switchTo('platform.current.department.switch', resource);
このコードにより、所属組織の切り替えを行うことができます。
所属組織の切り替えを行う場合は、以下の点に注意してください。
  • Lifecycle.switchTo() メソッドの第1引数「リソースID」には「 platform.current.department.switch 」を指定してください。

  • リソース情報(resource)には切り替え先の組織を指定してください。
    また、所属組織の切り替えを行うには、切り替えを行うユーザが所属している組織を指定する必要があります。
  • 切り替え先の組織には、会社コード(currentCompanyCd)、組織セットコード(currentDepartmentSetCd)、組織コード(currentDepartmentCd)の3つを必ず指定してください。