intra-mart Accel Documents プログラミングガイド 第7版 2018-04-01

intra-mart Accel Documents へのアクセス

Accdel Documents にアクセスするためには、まず、KnRepositoryクラスのインスタンスを取得し、
そのインスタンスからKnSessionやKnServiceAdminsessionなどのセッションクラスのインスタンスを生成します。
各セッションクラスのインスタンスで利用可能な機能は以下の通りです。
  • KnSessionクラスのインスタンスは、キャビネット単位の一般的な操作およびキャビネット単位の管理操作で利用するAPIにアクセスできます。
  • KnServiceAdminSessionクラスのインスタンスは、テナント全体を管理する操作で利用するAPIにアクセスできます。
  • KnGuestSessionクラスのインスタンスは、ログインしていないゲストユーザの操作で利用するAPIにアクセスできます。

KnRepositoryクラスのインスタンス取得、および各セッションクラスのインスタンス生成と利用方法について説明します。

サンプルプログラム

KnRepository取得の例

「acceldocuments.properties.xml」に記載された設定内容で、KnRepositoryクラスのインスタンスを取得するサンプルプログラムです。

// アプリケーションの設定ファイルからプロパティを作成します。
FileInputStream fis = new FileInputStream("C:/sample/acceldocuments.properties.xml");

// 設定をPropertiesとして取得します。
Properties properties = new Properties();
try {
   properties.loadFromXML(fis);
} finally {
   fis.close();
}

// KnRepositoryを取得します。
KnRepository repository = KnFactory.getRepository(properties);

KnServiceAdminSession生成の例

KnServiceAdminSession生成のサンプルコードを記載します。

// アカウントコンテキストのユーザを取得します。
String userCode = Contexts.get(AccountContext.class).getUserCd();

// 文書リポジトリ用のユーザ識別子を取得します。
UgId userId = KnUgIdUtil.getUserUgId(userCode);

// サービス管理セッションを生成します。
KnServiceAdminSession serviceAdminSession = repository.createServiceAdminSession(userId);

KnSession生成の例

KnSession生成のサンプルコードを記載します。

KnSessionを生成するためには、事前にキャビネットを作成しておく必要があります。

コラム

キャビネットの作成方法は キャビネット作成 を参照してください。

// クライアントのタイプを指定します。操作履歴に記録されます。
String clientType = "Accel Documents";

// クライアントのアドレスを指定します。通常は、ServletRequest#getRemoteAddr() などで取得したIPアドレスです。
String clientAddress = "127.0.0.1";

// アカウントコンテキストのユーザを取得します。
String userCode = Contexts.get(AccountContext.class).getUserCd();

// 文書リポジトリ用のユーザ識別子を取得します。
UgId userId = KnUgIdUtil.getUserUgId(userCode);

// セッションを生成します。
KnSession session = repository.createSession(cabinetId, userId, clientType, clientAddress);

KnGuestSession生成の例

KnGuestSession生成のサンプルコードを記載します。

// クライアントのタイプを指定します。操作履歴に記録されます。
String clientType = "Accel Documents";

// クライアントのアドレスを指定します。通常は、ServletRequest#getRemoteAddr() などで取得したIPアドレスです。
String clientAddress = "127.0.0.1";

// ゲストセッションを生成します。
KnGuestSession guestSession = repository.createGuestSession(cabinetId, clientType, clientAddress);

KnSessionによるAPI利用の例

KnSessionを使用して、オブジェクト削除のAPIを呼び出すサンプルコードです。

コラム

サンプルコード中に出現するsessionがKnSessionクラスのインスタンスです。

// 削除するオブジェクトのIDを指定します。
ObjectId objectId = ObjectId.fromIdString("kn:folder-01");

// オブジェクトを削除します。
session.removeObject(objectId);

コラム

KnSessionを使用した操作をひと通り終了したら、KnSession#close()でセッションをクローズしてください。

KnSessionを管理者モードに設定する例

KnSessionを管理者モードに設定するサンプルコードを記載します。

管理者モードでは、キャビネット内のオブジェクトにすべての権限が付与された状態でKnSessionの各APIを呼び出すことができます。

コラム

キャビネット管理者として登録されていないユーザは設定できません。

// 現在の状態を取得します。
boolean enabled = session.isAdministratorPrivilegesEnabled();

try {
   // 管理者権限を有効化します。
   session.setAdministratorPrivilegesEnabled(true);

   // この部分でKnSessionから各APIを呼び出します。
   // ...

} finally {
   // 管理者権限をもとの状態に戻します。
   session.setAdministratorPrivilegesEnabled(enabled);
}