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

クラスの定義作成

概要

クラス定義の作成機能について記載します。

サンプルプログラム

以下の条件でクラス定義を作成するコードのサンプルです。

クラス定義を作成するときの設定例

属性 設定値
ID sample_doc_class
名前(標準) sample document class
名前(日本語) サンプル文書クラス
名前(英語) sample document class
名前(中国語) sample document class
基本クラス 文書
説明(日本語) サンプル文書クラスの説明
説明(英語) sample document class description
説明(中国語) sample document class description
使用可能属性 knc_attr:sample_attr (サンプル属性)

注意

属性の操作は、セッションの管理者モードを有効にする必要があります。
管理者モードについては、 intra-mart Accel Documents へのアクセス を参照してください。
// 定義するクラスの基本クラスのクラスIDを作成します。
ClassId superClassId = ClassId.fromIdString(KnSystemSchemas.ABSTRACT_DOCUMENT_CLASS_ID);

// クラス定義のプレフィックスの取得します。
String prefix = KnSystemSchemas.CUSTOM_DOCUMENT_CLASS_ID_PREFIX;

// 定義するクラスのクラスIDを作成します。
ClassId classId = new ClassId(prefix, "sample_doc_class");

// クラス定義のプロトタイプを作成します。
KnClassDefinitionPrototype proto = new KnClassDefinitionPrototype(classId);

// 基本クラスをプロトタイプに設定します。
proto.setSuperClassId(superClassId);

// クラス定義を登録します。
session.createClassDefinition(proto);

// クラスに設定する属性定義を取得します。
AttributeDefinition attrDef = session.getAttributeDefinition(attrId);

// クラス定義に属性を設定します。
// 属性のデフォルト値を取得する関数(getDefaultValue)を作成してください。
Object defaultValue = getDefaultValue(attrDef.getType());
session.addAttributeToClassDefinition(classId, attrDef.getId(), defaultValue);

// クラス定義の表示名を設定します。
Map<Locale, String> className = new HashMap<String, String>();
className.put(Locale.ROOT, "sample document class");
className.put(Locale.JAPANESE, "サンプル文書クラス");
className.put(Locale.ENGLISH, "sample document class");
className.put(Locale.SIMPLIFIED_CHINESE, "sample document class");
String classNameKey = session.getClassDefinitionDisplayNameKey(classId);
session.putDisplayName(classNameKey, className);

// クラス定義の説明を設定します。
Map<String, String> classDesc = new HashMap<String, String>();
classDesc.put(CommonConst.LOCALE_JA, "サンプル文書クラスの説明");
classDesc.put(CommonConst.LOCALE_EN, "sample document class description");
classDesc.put(CommonConst.LOCALE_ZH, "sample document class description");
String treeId = session.getClassDefinitionPreferenceTreeId(classId);
session.putPreferenceNode(treeId, CommonPreferenceConst.DESCRIPTION_PATH, classDesc);

// クラスにセキュリティ定義を設定します。
// セキュリティ定義はセキュア文書クラスにのみ設定が可能です。
KnSecurityDefinitionId refSecurityDefinitionId = securityDefinitionId ;
session.relateClassDefinition(classId, refSecurityDefinitionId);

// クラスに保管定義を設定します。
// 保管定義は文書クラス、セキュア文書クラスにのみ設定が可能です。
KnRetentionDefinitionId refRetentionDefinitionId = retentionDefinitionId ;
session.relateClassDefinitionToRetentionDefinition(classId, refRetentionDefinitionId);

コラム

サンプルコード中に出現するsessionはKnSessionを表します。
KnSessionの取得/生成方法は、 intra-mart Accel Documents へのアクセス を参照してください。

コラム

サンプルコード中に出現するattrIdは事前に作成したAttributeIdを表します。
AttributeIdの作成方法は、 属性定義の作成 を参照してください。

コラム

サンプルコード中に出現するsecurityDefinitionIdは事前に作成したKnSecurityDefinitionIdを表します。
KnSecurityDefinitionIdの作成方法は、 セキュリティ定義の作成 を参照してください。

コラム

サンプルコード中に出現するretentionDefinitionIdは事前に作成したKnRetentionDefinitionIdを表します。
KnRetentionDefinitionIdの作成方法は、 保管定義の作成 を参照してください。