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

チェックアウト/チェックイン

概要

文書をチェックアウトし、チェックインを行う機能について記載します。

チェックアウトは文書のロックを行って他ユーザーの文書編集を抑制し、 チェックインはロックしている文書に対し新規バージョンを追加し、アンロックをすることで実現しています。

サンプルプログラム

最初に文書(kn:document-01)をチェックアウトするサンプルコードを記載します。

// チェックアウトをする文書のIDを指定します。
ObjectId documentId = ObjectId.fromIdString("kn:document-01");

session.lockDocument(documentId);

次に文書(kn:document-01)をチェックインするサンプルコードを記載します。

// チェックインをする文書のIDを指定します。
ObjectId documentId = ObjectId.fromIdString("kn:document-01");

// 登録する文書のコンテンツをファイルから指定します。
KnFileContent content = new KnFileContent(new File("sample.txt"));

// 作成時に設定する属性値を指定します。
Map<AttributeId, Object> attributeMap =
        new HashMap<AttributeId, Object>();
// 名前属性の値を指定します。
attributeMap.put(KnSystemSchemas.OBJECT_NAME_ATTRIBUTE_ID, content.getFileName());
// 表示用のバージョンを指定します。
attributeMap.put(KnSystemSchemas.DISPLAY_VERSION_NO_ATTRIBUTE_ID, newDisplayVersionNo)

session.createDocumentVersion(documentId, attributeMap, content);
session.unlockDocument(documentId);

以上のコードで文書(kn:document-01)をチェックアウトし、チェックインできます。

コラム

表示用のバージョン(newDisplayVersionNo)は、チェックインをする文書の最新バージョンを取得して作成します。

KnFetch fetch = new KnFetch(
new HashSet<AttributeId>(
Arrays.asList(KnSystemSchemas.DISPLAY_VERSION_NO_ATTRIBUTE_ID)),
false, false);
KnDocument document = session.getDocumentVersion(documentId, VersionId.LATEST, fetch);
List<Integer> latestDisplayVersionNo = document.getDisplayVersionNo();
newDisplayVersionNo = createNewDisplayVersionNo(latestDisplayVersionNo);

注意

KnSystemSchemas.DISPLAY_VERSION_NO_ATTRIBUTE_IDは、表示上の属性であり、自由に設定可能です。
intra-mart Accel Documentsの内部では整合性のチェックはしていません。