かなり間があいてしまいましたが、今回は、カスタムタイプの定義、クエリ、サービスの概要を紹介します。
コンテンツリポジトリの情報を組み合わせたヴァーチャルなテーブルを想定し、そこへのSELECT文による問い合わせを行うためのルールが整備されている、という状況です。具体的には、オブジェクトタイプ(とその派生タイプ)毎にテーブルが作成され、行は個別のオブジェクトを、列は属性を表現する形になります。(値がセットされていなかったり、継承を受けていない属性の値はNULLになります)
基本的には属性値のテーブルになるので、ContentStream自体への直接的なアクセス手段はこのCMIS SQLの枠組みでは定義されていません。Object IDを取得したあとでメソッド経由でアクセスすることになります。
演算子や複数の値を持ち得る属性と単一の値しかない属性の違いによる振る舞いの違いについて仕様書上には幾つかの言及があるのですが、ここでは割愛させて頂くとして、4つほど特徴的な構文(述語、関数)があるのでそれらについてだけ簡単に紹介したいと思います。
・CONTAINS([識別子],<検索文字列>) 全文検索による条件づけ。
・SCORE() 全文検索によるスコアの取得。
・IN_FOLDER([識別子],<フォルダのID>) 対象フォルダに格納されている、という条件を表現。
・IN_TREE([識別子],<フォルダのID>) 対象フォルダもしくはそのサブ(子孫)フォルダに格納されている、という条件を表現。
サービス
・共通サービス要素
特にメソッドは定義されず、例外などが整備されています。例えば以下の例外はCMISサービス全体で共有され、各サービスともに発生させる可能性があります。
InvalidArgmentException 引数が不正
ConstraintViolationException 制約が満たされていない
ObjectNotFoundException オブジェクトが見つからない
PermissionDeniedException 権限が不十分
OperationNotSupportedException オペレーションがサポート(許可)されていない
RuntimeException (随時発生)
その他特定のサービスからしかあがらないような例外も定義されています。
ContentAlreadyExistsException 作成しようとした文書がすでに存在している
FilterNotValidExeption プロパティフィルタの条件にあわない(属性値を取得するメソッドは、対象属性を制限する"プロパティフィルタ”という文字列を受け取ることがあります。プロパティフィルタの実体はワイルドカードである*か属性名をカンマで繋げた文字列です)
StorageException 容量不足などのストレージエラー
StreamNotSupportedException 対象のタイプはContentStreamをサポートしていない
UpdateConfilctException 更新の失敗(ロックをせずに複数ユーザの更新が重複しそうになった場合など)
VersioningException 版管理上の不整合(対象がすでに最新版でなくなっているなど)
続きは会員限定です。無料の読者会員に登録すると続きをお読みいただけます。
- 会員登録 (無料)
- ログインはこちら
ようやく策定されたECMのための共通言語 CMIS
2009.06.15
2008.10.17
2008.09.26