ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発
11gリリース1 (11.1.1.8.3)
E49666-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

31 Content Management REST API

OASIS CMIS (Content Management Interoperability Service)技術委員会は、Enterprise Content Management (ECM)システムの相互運用性の向上を可能にするWebサービス・インタフェース仕様の標準化を目指して活動しています。詳細は、OASISのCMISサイト(http://www.oasis-open.org/committees/cmis/)を参照してください。

Content Management REST Serviceは、CMIS RESTful AtomPubサーバー・バインディングを使用して、アプリケーション内に構成されたOracle Content Serverのリポジトリにアクセスするサーバーを提供します。

この章はOASIS CMIS仕様を補完するためのものであり、Content Management REST Serviceの具体的な実装について詳しく説明します。まず最初に、すべてのユーザーはOASIS CMIS仕様を確認する必要があります。この章は、http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-spec-v1.0.htmlで参照可能なCMIS (Content Management Interoperability Service)バージョン1.0を参照しています。

この仕様には、ドメイン・モデルと2つのサーバー・バインディングが含まれています。前述のように、Content Management REST Serviceでは現在RESTful AtomPub bindingバインディングのみが実装されます。AtomおよびAtomPubはレスポンスのデフォルト・フォーマットであるため、ご使用に際してはこれらを十分理解していることが必要です。


注意:

CMISは、広範囲の異なるコンテンツ・システムのための最低限の共通の基準を提供します。これは、Oracle WebCenter Contentの機能と連携していません。利用可能な機能の詳細は、Content Management REST Serviceのサービス・ドキュメントを参照してください。


31.1 CMISドメイン・モデル

CMIS仕様の2項: 「Domain Model」では、1つ以上のコンテンツ管理リポジトリとともに動作するアプリケーションで使用可能なドメイン・モデルを定義しています。

31.1.1 データ・モデル

Content Management REST Serviceのサービス・ドキュメントは、AtomPubワークスペースで構成されています。ワークスペースはそれぞれ、コンテンツ接続にマッピングされます(Content Management REST Serviceでサポートされているのは、Oracle WebCenter Contentリポジトリのみです)。サービス・ドキュメントの詳細は、次項第31.2項「CMIS第II部: RESTful AtomPubバインディング」を参照してください。

31.1.1.1 リポジトリ

このリリースでは、2.1.1項にリストされているオプション機能の一部は実装されていません。今後のリリースで、バージョニング、ACL、ポリシー、リレーションシップ、変更ログ、フォルダの下位要素/ツリーおよびレンディションの実装が検討される予定です。

Content Management REST Service実装には、具体的に次のオプション機能が含まれています。

capabilityGetDescendants = true
capabilityGetFolderTree = false 
capabilityContentStreamUpdatability = anytime 
capabilityChanges = none
capabilityRenditions = none 
capabilityMultifiling = false 
capabilityUnfiling = false 
capabilityVersionSpecificFiling = false 
capabilityPWCUpdateable = false 
capabilityPWCSearchable = false 
capabilityAllVersionsSearchable = false 
capabilityJoin = none    
capabilityACL = none
capabilityQuery = none, metadataonly, or both combined

31.1.1.2 オブジェクト

Content Management REST Serviceでは、ドキュメント・オブジェクトおよびフォルダ・オブジェクトがサポートされています。CMISでは、ノードのcmis:baseTypeIdcmis:folderまたはcmis:documentとなります。また、タイプのcmis:baseIdcmis:folderまたはcmis:documentとなります。

31.1.1.3 オブジェクト型

CMISオブジェクト型には、Oracle WebCenter Content: Content Serverメタデータ・フィールド定義および Oracle WebCenter ContentのSite Studioリージョン定義からマップされたフィールドが含まれています。

Oracle WebCenter Contentメタデータ・フィールドからCMISプロパティ定義へのマッピングは、次のとおりです。

表31-1 コンテンツ・サーバー・メタデータのマッピング

Oracle WebCenter Contentメタデータ CMISプロパティ定義

選択リストを検証して構成されたオプション・リスト、およびYesNoViewビューやTrueFalseViewビューを持つTEXTメタデータ・フィールド

cmis:propertyBoolean

他のすべてのTEXTメタデータ・フィールド

cmis:propertyString

LONG TEXTメタデータ・フィールド

cmis:propertyString

MEMOメタデータ・フィールド

cmis:propertyString

INTEGERメタデータ・フィールド

cmis:propertyInteger

DATEメタデータ・フィールド

cmis:propertyDateTime

DECIMALメタデータ・フィールド

cmis:propertyDecimal


Site Studioリージョン定義フィールドからCMISプロパティ定義へのマッピングは、次のとおりです。

表31-2 Site Studioリージョン定義のマッピング

Site Studioリージョン定義 CMISプロパティ定義

イメージ要素定義フィールド

cmis:propertyString

WYSIWYG要素定義フィールド

cmis:propertyString

プレーン・テキスト要素定義フィールド

cmis:propertyString

静的リスト要素定義フィールド

cmis:propertyString


31.1.1.4 ドキュメント・オブジェクト

ドキュメント・オブジェクトは、リポジトリによって管理される基本的な情報エンティティです。CMIS仕様で定義されているように、ドキュメント・オブジェクトは、バージョニング可能、ファイリング可能、問合せ可能、制御可能およびACLControl可能にすることができます。前述のように、このリリースのContent Management REST Serviceでは、バージョニング、マルチファイリング、ポリシーまたはACLをサポートしていません。

あるNodeが FolderではなくDocumentであると判定された場合、その子ノードはCMISを介しては公開されません。CMISでは、各Documentオブジェクトは1つのコンテンツ・ストリームに関連付けられており、WebCenter CMIS RESTでは、このストリームは、そのドキュメントに関連付けられたOracle WebCenter Content: Content Serverバイナリです。

31.1.1.5 フォルダ・オブジェクト

CMIS仕様では、フォルダ・オブジェクトはコンテンツ・ストリームを持たず、バージョニング可能ではありません。ノードがフォルダであると判断されると、Content Management REST Serviceはそのノードをこの方法で公開します(Oracle WebCenter Contentでは、フォルダはコンテンツ・ストリームを持たず、バージョニング可能ではありません)。

31.1.1.6 リレーションシップ・オブジェクト

CMIS仕様の2.1.6項: 「Relationship Object」は適用できません。Content Management REST Serviceはこのリリースのリレーションシップをサポートしていません。

31.1.1.7 ポリシー・オブジェクト

CMIS仕様の2.1.7項: 「Policy Object」は適用できません。Content Management REST Serviceはこのリリースのポリシーをサポートしていません。

31.1.1.8 アクセス制御

CMIS仕様の2.1.8項: 「Access Control」は適用できません。Content Management REST ServiceはこのリリースのACLをサポートしていません。許容されるアクションの詳細は、次の項を参照してください。

31.1.1.8.1 AllowableActionsマッピング

この項では、オブジェクトに対して定義される許容可能なアクションを一覧表示します。このリリースの実装内容により、すべてのオブジェクトに対してハードコードされているアクションも一部あります。その他の許容可能なアクションは、リポジトリ構成に基づいて設定されます。

  • canGetObjectRelationships = false

  • canCreateRelationship = false

  • canGetDescendants = false

  • canGetFolderTree = false

  • canCheckOut = false(バージョニング)

  • canCancelCheckOut = false(バージョニング)

  • canCheckIn = false(バージョニング)

  • canAddObjectToFolder = false(マルチファイリング)

  • canRemoveObjectFromFolder = false(アンファイリング/マルチファイリング)

  • canApplyPolicy = false

  • canGetAppliedPolicies = false

  • canRemovePolicy = false

  • canCreatePolicy = false

  • canApplyACL = false

  • canGetACL = false

  • canGetRenditions = false

  • canDeleteTree = true

  • canGetAllVersions = false (versioning)

31.1.1.9 バージョニング

CMIS仕様の2.1.9項: 「Versioning」は適用できません。Content Management REST Serviceはこのリリースのバージョニングをサポートしていません。

31.1.1.10 問合せ

CMIS問合せは結果セットを返します。結果セットの各エントリ・オブジェクトには、問合せで指定されたプロパティのみが含められます。Content Management REST Serviceでは問合せ内でのJOINをサポートしていないため、各結果エントリは単一ノードからのプロパティを表します。共通の検索では、"SELECT * FROM …"などの問合せが使用されます。

  • FROM句は検索対象のコンテンツ・タイプを指定します。

    • FROM cmis:document ==> 任意のOracle WebCenter Contentドキュメント(例: IDC:GlobalProfile)

    • FROM cmis:document ==> 任意のOracle WebCenter Contentフォルダ(例: IDC:Folder)

    • FROM typeQueryName ==> タイプが問合せ可能であるかぎり、そのタイプのcmis queryName(例: ora:t:IDC!;GlobalProfile)

  • cmis:document and cmis:folderタイプは常に問合せ可能です。その他のタイプは、リポジトリ内で検索可能であれば問合せ可能です。

  • IN_FOLDER述語は、指定されたフォルダID(結果の親)として実装されます。

  • IN_TREE述語は、指定されたフォルダID(結果のフォルダ構造内の親)として実装されます。

  • CONTAINS() 述語は、フルテキスト問合せ表現の演算子です。

  • cmis:documentおよびcmis:folderのプロパティは、それに対応するOracle WebCenter Contentシステム・プロパティが検索可能かつソート可能であれば、問合せ可能および順序付け可能となります。システム・プロパティは次のようにマッピングされます。

    • cmis:createdBy ==> dDocAuthor

    • cmis:lastModifiedBy ==> dDocCreator

    • cmis:creationDate ==> dCreateDate

    • cmis:lastModificationDate ==> dLastModifiedDate (10gでは、フォルダはdLastModifiedDateにマップされ、ドキュメントはdCreateDateにマップされます)

    • cmis:name ==> dOriginalName(ドキュメント用)またはdCollectionName(フォルダ用)

    • cmis:contentStreamFileName ==> dOriginalName

    • cmis:contentStreamLength ==> VaultFileSize

    • cmis:contentStreamMimeType ==> dFormat

    • cmis:objectId ==> dDocName

    • cmis:objectTypeId ==> Oracle WebCenter Contentプロファイル名またはSiteStudioリージョン定義名


      注意:

      cmis:objectTypeIdが順序付け可能となることはありません。


    • cmis:path ==> IN_FOLDERまたはIN_TREE述語を使用してください。


    注意:

    CMIS問合せ内で表示できない機能が含まれるリポジトリもあれば、問合せ内で使用可能なCMIS問合せ述語(または述語の組合せ)が制限されるような制約を持つリポジトリもあります。前述のマッピングを使用して、リポジトリの機能と制約によるCMIS問合せでの考慮事項を確認してください。


  • ネストされたプロパティは、問合せ可能でも順序付け可能でもありません。

  • Content Management REST Serviceの実装では、Oracle WebCenter Contentでソート可能と指定されるプロパティが順序付け可能と出力されます。このリストには、実際にはOracle WebCenter Contentでソートできないプロパティが含まれていることがあります。Oracle WebCenter Contentでソート・エラーと出力されるフィールドに対して順序付けを可能にするには、次の手順に従って、指定したOracle WebCenter Contentフィールドをソート可能にします。

    1. 「管理」に移動して、「管理アプレット」を開きます。

    2. Configuration Managerアプレットを開いて、「拡張検索のデザイン」をクリックします。

    3. 順序付け可能にするフィールドを編集し、「ソート可能」を選択します。

    4. 変更内容を保存して「管理」を修了します。

次の表は、具体的な検索の注意事項と推奨事項を示します。問合せの例は、第31.3項「Content Management REST Serviceのベスト・プラクティスおよび例」を参照してください。

表31-3 検索に関する注意事項と推奨事項

注意事項 推奨事項

Oracle WebCenter Contentでは、null値または非null値での問合せに対するサポートが限定的です。

検索動作での相違に注意して、サポート対象外の基準に左右される検索表現式を記述しないでください。

フォルダの再帰的検索は、Oracle WebCenter Contentではサポートされていませんが、Oracle WebCenter Contentサーバーで右記のように構成されている場合、ドキュメント用にサポートされます。

検索範囲には、ドキュメントのみを含めるようにしてください(select * from cmis:documentのようなselect句を追加してください)。

検索オブジェクト上に検索パスを設定します(where IN_TREE('/StellentRepository/IDC:Folder/2のようなwhere句を追加してください)。

folders_g CollectiveSearchRecursiveContentとこれに関連する設定(Oracle WebCenter Content config.cfgファイルのCollectionMaxBranchなど)を構成します。

多値プロパティの演算子はサブストリング・マッチを実行します。これは、ANY <multiValuedQueryName> IN (<literal>, ...)または<literal> = ANY < multiValuedQueryName>に適用されます。Oracle WebCenter Contentでは、オプション・リスト付きのフィールドに値をカンマ区切り形式で格納します。たとえば、A、BおよびCという値がある場合には、「A, B, C」と表現されます。「A, B」に対してANY検索またはANY IN検索を使用すると、このアイテムが見つかります。

検索動作での相違に注意して、必要以上のマッチ数を検出しないようにするために、Configuration Managerアプレット内のOracle WebCenter Contentオプション・リスト・デリミタ文字を変更することを考慮してください。

フォルダ(FROM cmis:folder)の検索時には、各基準に対して最大1つの値を指定できます。より選択的な問合せを実行するために、各基準は他の基準と論理的にANDでつながれたものとみなされます。フォルダの検索時には、ORまたはNOT演算子のサポートはありません。

Oracle WebCenter Contentフォルダ検索では、ORおよびNOTを使用しないでください。

すべてのプロパティが検索可能というわけではなく、検索で検索可能でないプロパティに遭遇した場合はParseExceptionが返されます(400エラー)。

Oracle WebCenter Content Configuration Manager情報フィールドのセクションを調べるか、ContentType定義を見直すことで、指定のコンテンツ・タイプに対してどのプロパティが検索可能か理解してください。isSearchableフィールド設定のURLを調べます。

URLの例:

http://myContentServer/idc/idcplg?IdcService=VCR_GET_CONTENT_TYPE&vcrContentType=IDC:Folder&IsSoap=1

または、CMISを介して固有のタイプを調べます。

すべてのContentTypeが検索可能というわけではありません。検索できないContentTypesに対して検索を試みると、例外がスローされます。たとえば、IDC:FileReferenceは検索できません。

すべてのContentTypeが検索可能というわけではないことに注意してください。

String多値プロパティのみ検索可能です。

String以外の多値プロパティ・タイプの検索を指定しないでください。

LONGプロパティにはNOT演算子を使用できません。

サポートされている構文を使用して問合せを再構成してください。

ソート基準は1つしかサポートされていません。

2つ以上のソート基準を使用する検索表現式を記述しないでください。

ソートまたは索引の付いていないフィールドは、結果的に例外となります。

索引の付いていないフィールドで検索を実行すると、「DRG-10837: セクションdStatusは存在しません」などの埋込み例外コードで、例外がスローされます。

ソート基準としてそれらを使用する前に、どのフィールドに索引が付けられているのか把握してください。isSortableフィールド設定のURLを調べます。

URLの例: http://myContentServer/idc/idcplg?IdcService=GET_ADVANCED_SEARCH_OPTIONS&IsSoap=1

または、CMISでタイプを調べて、プロパティ定義が問合せ可能かどうかを確認します。

検索問合せでは空の値は許可されていません。

cmis:name != ''.のような基準を使用しないでください。

Notequals演算子は非文字列のプロパティではサポートされません。

検索動作での相違に注意して、サポート対象外の基準に左右される検索表現式を記述しないでください。

同じOracle WebCenter Contentリポジトリでの複数の検索パスはサポートされません。

検索動作での相違に注意して、サポート対象外の基準に左右される検索表現式を記述しないでください。

ドキュメントの検索時には、Oracle WebCenter Contentが適切に構成されていれば再帰的検索(フォルダ・ツリー検索)がサポートされます。

検索パスが設定されていない場合には、リポジトリ内のすべてのドキュメント(ファイル済と未ファイル分の両方)が検索されます。

コンテンツ・サーバーのfolders_g CollectionSearchRecursiveContentとこれに関連する設定(Oracle WebCenter Content config.cfgファイルのCollectionMaxBranchなど)を構成します。これらの設定は、Oracle WebCenter Contentドキュメントで記述されます。フォルダ・ツリーの範囲に絞ってドキュメント検索を実行するには、IN_TREE述語を使用します。

ドキュメントの検索でLIKE演算子を使用する場合、末尾のパス要素でワイルドカード(%)のみサポートされています。

検索動作での相違に注意して、サポート対象外の基準に左右される検索表現式を記述しないでください。

ドキュメント(select * from cmis:document)を検索する場合、複数のコンテンツ・タイプに検索を限定することはできません。たとえば、select * from IDC:MyProfile, IDC:AnotherProfileはサポートされません。これは、コンテンツ・タイプが明らかに複数でありJOINSがサポートされていないためです。

検索を複数のコンテンツ・タイプに限定する必要がある場合は、複数の問合せを出して同じ動作を実現します。すべてのタイプを横断的に検索する場合は、select文内でcmis:documentを使用します。

cmis:objectTypeIdが問合せで指定されている場合、Oracle WebCenter Content検索ではORはサポートされません。他のパラメータはこの基準とANDでつながれたものとみなされますが、ORはサポートされません。

この機能が必要がある場合は、複数の問合せを発行して同じ動作を実現します。

cmis:objectTypeId基準は、 ==!=、およびlikeのみサポートしています。!=の使用はフォルダを除外するケースに限られています(select * from cmis:documentの追加と同じ動作になります)。

cmis:objectTypeId基準を使用するときは、有効な演算子に注意します。

問合せは、Oracle WebCenter Content検索エンジンの選択に応じて大文字と小文字を区別する場合があります。

Oracle WebCenter Content検索エンジンの選択は、大文字と小文字を区別するかどうかに影響することがあるので注意してください。メタデータがOracleTextSearchを使用して検索すると、検索エンジンは一般に大文字と小文字を区別しません。メタデータがDATABASE.FULLTEXTを使用して検索すると、検索エンジンは一般に大文字と小文字を区別します。メタデータ・フィールドにより正確な動作が異なることがあります。


31.1.2 サービス

CMIS仕様の第2.2項「サービス」で説明されているメソッドは、Content Management REST Serviceによって実装されています。具体的な実装の詳細は、第31.2項「CMIS第II部: RESTful AtomPubバインディング」で説明します。

31.2 CMIS第II部: RESTful AtomPubバインディング

CMIS仕様の3項: 「RESTful AtomPub Binding」では、1つ以上のコンテンツ管理リポジトリとともに動作するアプリケーションで使用可能なAtomPubに基づいた仕様を定義しています。RESTサービスはポータル・インスタンスを通して使用できます。

31.2.1 サービス・ドキュメント

リポジトリのナビゲーションはすべて、AtomPubサービス・ドキュメントから開始されます。リポジトリ内のすべてのアクセス可能コンテンツの検出は、このドキュメントからコレクション、リンクおよびテンプレートを介して行うことができます。CMIS Webアプリケーションのコンテキスト・ルートからのサービス・ドキュメントのURIは、/rest/cmis/repositoryです。

したがって、前述の例のようにアプリケーションがlibrary-context-root-overrideとともにデプロイされている場合、サービス・ドキュメントにはhttp://hostname:port/rest/cmis/repositoryというURLを介してアクセスします。


注意:

RESTアプリケーションはポータルとのみ使用可能で、Portal Frameworkアプリケーションとは使用できません。しかし、ポータルで使用可能なRESTおよびCMISリソースにアクセスするためのHTTPリクエストをFrameworkアプリケーションから生成できます。目的とする関連コンテンツへの接続でポータル・インスタンスが構成されていることを確認する必要があります。


デフォルトでは、このドキュメントにはOracle WebCenter Contentの構成済のリポジトリごとにワークスペースが含まれています(Oracle WebCenter ContentリポジトリのみがOracle WebCenter PortalのCMIS RESTでサポートされています)。単一リポジトリのサービス・ドキュメントを取得するには、CMIS AtomPubバインディング仕様の3.6.2.1項で説明されているように、repositoryId問合せパラメータを使用します。

前項で説明したように、サービス・ドキュメントはAtomPubワークスペースから構成されます。各ワークスペースは Oracle WebCenter Portal Content Server接続にマッピングされます。

ユーザーはサービス・ドキュメントから開始して、予測されたパスを使用してコレクションやリンクにナビゲートすることが想定されるためです。コレクションのリンクとタイトルおよびタイプとの関係はすべてCMIS仕様で定義されているため、一般的にはクライアント実装によるナビゲートが可能です。また、パスによるオブジェクトへのアクセス、IDによるオブジェクトへのアクセス、IDによるタイプへのアクセス、および問合せへのアクセスを簡単に行うためにリポジトリごとに定義されたテンプレートもあります。パスおよびIDのテンプレートでの変数の書式を確認するには、フォルダおよびドキュメントのエントリを参照してください。

31.2.2 レスポンス・フォーマット

CMIS仕様の3.1.3項: 「Response Formats」では、Acceptヘッダー内に表示されているサポート対象のメディア・タイプでオーバーライドされないかぎり、デフォルトでAtom/AtomPubスタイル・フォーマットが返されることが示されています。

一般的なAtomPubフィード・リーダーを使用すると、CMIS RESTサーバーにより返されたフィードをウォークスルーできます。すべてのCMIS詳細が表示されるわけではありませんが、リンクをナビゲートすることはできます。一般に、フィード・リーダーを設定するためには、特定のフィードのURIがわかっている必要があります。このURIは、サービス・ドキュメント(たとえば、typesdescendantsのワークスペース・リンク)をナビゲートすることにより確認できます。

問合せ構文の詳細は、CMIS仕様を参照してください。Content Management REST Serviceのベスト・プラクティスおよび例については、第31.3項「Content Management REST Serviceのベスト・プラクティスおよび例」を参照してください。

31.2.3 追加機能

Content Management REST ServiceではCMIS仕様の他に、次の追加機能を提供します。

31.2.3.1 フォルダの子コレクション

この仕様は、次のCMISサービスを定義します。

  • GET: getChildren

  • POST: createDocument
    またはcreateFolder
    またはcreatePolicy
    またはmoveObject
    またはaddObjectToFolder

Content Management REST Serviceでは、次の追加のサービスが提供されます。

  • POST: create
    このサービスには、uid、fileName、contentId、commentsおよびsimpleResponseという5種類の問合せパラメータと、1つのヘッダー・パラメータSlugが用意されています。これは、簡単なバイナリ・リクエストのアップロードとして使用されることを意図したサービスです。このサービスでは新規ドキュメントが作成されます。SlugおよびfileNameを使用して、リクエストに添付されるバイナリの名前を付けます(両方のパラメータの使用はオプションで、1つのみを定義する必要があります。fileNameが最初にチェックされます)。commentsパラメータはオプションであり、Oracle WebCenter ContentがdDocNameを自動生成するように設定されている場合、contentIdはオプションです。

  • POST: create Content-Type: multipart/form-data
    このサービスには、1つの問合せパラメータuid(ドキュメントが作成されるフォルダのuid)が用意されています。ブール型の問合せパラメータsimpleResponseがfalseに設定されている場合、メディア・タイプapplication/atom+xml;type=entryをレスポンスとして返します。trueに設定されている場合、新しく作成されたドキュメントを指すURIとともに、メディア・タイプtext/htmlがレスポンスとして返されます。commentsおよびsimpleResponseパラメータは両方ともオプションであり、Oracle WebCenter ContentがdDocNameを自動生成するように設定されている場合、contentIdはオプションです。名前"fileUpload"が必要です。

    <html>
    <head>
        <title>simple post</title>
    </head>
    <body>
    <form action="http://<host>:<port>/rest/api/cmis/children/StellentRepository?uid=IDC:Folder/2"
          method="POST"
          enctype="multipart/form-data">
        Select a document to upload: <input type="file" name="fileUpload"/><br>
         <input type="hidden" name="comments" value="this is just a comment"/>
         <input type="hidden" name="contentId" value="uniqueID1"/>
         <input type="hidden" name="simpleResponse" value="true"/> 
        <input type="submit" value="Submit"/>
    </form>
    </body>
    </html>
    

31.2.3.2 ドキュメント・エントリ

この仕様は、次のCMISサービスを定義します。

  • GET: getObject、getObjectOfLatestVersion (getObject)

  • PUT: updateProperties

  • DELETE: deleteObject

Content Management REST Serviceでは、次の追加のサービスが提供されます。

  • POST: postToDelete
    この新しいサービスには、uidおよび_methodという2つの問合せパラメータが用意されています。ドキュメントはPOSTを介して削除できます。

    http://<host>:<port>/rest/api/cmis/document/repoName?uid=ABC&_method="delete"
    

31.2.3.3 コンテンツ・ストリーム

この仕様は、次のCMISサービスを定義します。

  • GET: getContentStream

  • PUT: setContentStream

  • DELETE: deleteContentStream

Content Management REST Serviceでは、次の追加のサービスが提供されます。

  • POST: postTunnelContentStream
    このサービスには、uid、overwriteFlag、fileName、commentsおよび_methodという5種類の問合せパラメータと、1つのヘッダー・パラメータSlugが用意されています。これは、簡単なバイナリ・リクエストのアップロードまたはPOSTを介した削除として使用されることを意図したサービスです。このサービスには、ドキュメントがすでに存在している必要があります。SlugおよびfileNameを使用して、リクエストに添付されるバイナリの名前を付けます(両方のパラメータの使用はオプションで、1つのみを定義する必要があります。fileNameが最初にチェックされます)。overwriteFlagパラメータは、デフォルトでtrueに設定されています。commentsパラメータはオプションで、_methodの有効な値は"delete"または"put"です(大文字と小文字を区別しません)。

    http://<host>:<port>/rest/api/cmis/stream/repoName?uid=ABC&_method="delete"
    
  • POST: postTunnelContentStream
    Content-Type: multipart/form-data
    このサービスには、1つの問合せパラメータuidが用意されています。これは、簡単なhtmlのmultipart/form-dataのアップロードまたはPOSTを介した削除として使用することを意図したサービスです。このサービスには、ドキュメントがすでに存在している必要があります。属性名"fileUpload"は必須です。"comments"はオプションで、"_method"の有効な値は"delete"または"put"です(大文字と小文字を区別しません)。

    <form action="http://<host>:<port>/rest/api/cmis/stream/repoName?uid=WDOC019113"
          method="POST"
          enctype="multipart/form-data">
        Select a document to upload: <input type="file" name="fileUpload"/><br>
         <input type="hidden" name="comments" value="this is just a comment"/>
         <input type="hidden" name="_method" value="PUT"/>
        <input type="submit" value="Submit"/>
    </form>
    

31.3 Content Management REST Serviceのベスト・プラクティスおよび例

この項では、Content Management REST Serviceの使用に関するベスト・プラクティスおよび例を示します。問合せ構文の詳細は、CMIS仕様を参照してください。

この項には次のサブセクションが含まれます:

31.3.1 ベスト・プラクティス

Content Management REST Serviceを使用するリポジトリに対して推奨されるベスト・プラクティスを次に示します。

  • 問合せの"FROM"部分に使用できるタイプを決めるには、AtomPubサービス・ドキュメントからタイプ・コレクションに関する項目を参照してください。タイプは必ず問合せ可能とし、必ずそのタイプの問合せ名を使用するようにする必要があります。

    たとえば、IDC:GlobalProfileは次の例に似たタイプ情報を保持できます。

    <cmis:localName>IDC:GlobalProfile</cmis:localName>            
    <cmis:displayName>IDC:GlobalProfile</cmis:displayName>            
    <cmis:queryName>ora:t:IDC!;GlobalProfile</cmis:queryName>            
    <cmis:queryable>true</cmis:queryable>
    

    前述のタイプ情報に関する問合せの例は、"SELECT * FROM ora:t:IDC!;GlobalProfile"とすることができます。

  • 問合せの"SELECT"および"WHERE"部分に使用できるプロパティを決めるには、関連するタイプのエントリを参照してください。そのタイプのプロパティ定義がそれぞれリストされ、問合せ可能および順序付け可能に対応する設定が用意されます。cmis:querynameがこの問合せで使用できる値です。

    たとえば、IDC:GlobalProfileは次の例に似たプロパティ定義を保持できます。

    <cmis:propertyStringDefinition>
                  <cmis:id>/stanl18-ucm11g/IDC:GlobalProfile.ora:p:dDocName</cmis:id>
                  <cmis:localName>dDocName</cmis:localName>
                  <cmis:displayName>dDocName</cmis:displayName>
                  <cmis:queryName>ora:p:dDocName</cmis:queryName>
                  <cmis:description>Content ID</cmis:description>
                  <cmis:propertyType>string</cmis:propertyType>
                  <cmis:cardinality>single</cmis:cardinality>
                  <cmis:updatability>readwrite</cmis:updatability>
                  <cmis:inherited>false</cmis:inherited>
                  <cmis:required>false</cmis:required>
                  <cmis:queryable>true</cmis:queryable>
                  <cmis:orderable>true</cmis:orderable>
                </cmis:propertyStringDefinition>
    

    前述のプロパティ定義に関する問合せの例は、"SELECT ora:p:dDocName FROM ora:t:IDC!;GlobalProfile"とすることができます。

  • 問合せの可読性を高めるために、ContentTypeおよびPropertyDefinitionの名前には英数字以外の文字を使用しないでください。

31.3.2 Content Management REST Serviceの例

この項では、問合せの例をいくつか示します。問合せ構文の詳細は、CMIS仕様を参照してください。(問合せのURI全部を取得するには、サービス・ドキュメント内の問合せURIテンプレートを参照してください。)

  • SELECT * from cmis:folder

  • SELECT cmis:name, cmis:contentStreamFileName, cmis:contentStreamMimeType, cmis:contentStreamLength FROM cmis:document WHERE cmis:contentStreamFileName = 'BinaryName' AND cmis:contentStreamMimeType = 'text/html' AND cmis:contentStreamLength > 1

  • SELECT cmis:name, cmis:creationDate, cmis:lastModificationDate FROM cmis:folder WHERE cmis:name = 'Trash' AND cmis:lastModificationDate > TIMESTAMP '2008-05-18T10:32:44.703-06:00'

  • SELECT * FROM cmis:document WHERE cmis:name LIKE 'baker%'

  • SELECT * FROM cmis:document WHERE cmis:name NOT IN ('nodeBoolean', 'nodeLong')

  • SELECT cmis:name from cmis:document where IN_TREE('/StellentRepository')

  • SELECT * FROM ora:t:IDC:GlobalProfile WHERE ora:p:xBooleanTestField = FALSE ORDER BY ora:p:dDocTitle ASC

  • SELECT ora:p:xMultiValuedDelimiterTest FROM ora:t:IDC:GlobalProfile WHERE ANY ora:p:xMultiValuedDelimiterTest NOT IN ('four')

  • SELECT cmis:name FROM ora:t:IDC:GlobalProfile WHERE CONTAINS('test') ORDER BY ora:p:dInDate DESC

  • SELECT * FROM cmis:document where IN_TREE('/StellentRepository/IDC:Folder/2')