(58)【調査した分野】(Int.Cl.,DB名)
請求項2に記載のコンピュータ実施方法であって、前記情報は前記コンテンツアイテムと関連付けられたコメント、または、前記コンテンツアイテムと関連付けられたタスクの少なくとも1つを含む、コンピュータ実施方法。
請求項2に記載のコンピュータ実施方法であって、前記コンテンツアイテムにアクセスするための前記情報は条件を含み、前記選択可能なグラフィカルユーザインタフェース要素は前記条件の受諾を示す、コンピュータ実施方法。
請求項6に記載のシステムであって、前記カーネルレベルファイルイベントは保存動作であって、前記命令はコメント提出インタフェースを提示するためのものであって、前記クライアントデバイスは、
前記コメント提出インタフェースを介して、前記コンテンツアイテムに関連するコメントを受け取ることと、
前記コメントを前記協調データと共に格納することと、を実行するように構成された、システム。
請求項5に記載のシステムであって、前記情報は前記コンテンツアイテムと関連付けられたコメント、または、前記コンテンツアイテムと関連付けられたタスクの少なくとも1つを含む、システム。
請求項5に記載のシステムであって、前記命令はファイルアクセス制限を含み、前記命令を実行することは前記ファイルアクセス制限を行使することを含む、システム。
請求項9に記載のシステムであって、前記コンテンツアイテムは前記コンテンツ管理システムクライアントアプリケーションを実行する前記クライアントデバイス上にローカルに格納され、前記コンテンツアイテムのコピーも前記コンテンツ管理システムにより格納され、
前記ファイルアクセス制限は、遠隔ユーザが、前記クライアントデバイス上にローカルに格納されているコピー以外の前記コンテンツアイテムのコピーを編集していることの通知であり、前記ファイルアクセス制限は、前記クライアントデバイス上にローカルに格納されている前記コンテンツアイテムの前記コピーの少なくとも一部の編集を妨げる、システム。
請求項5に記載のシステムであって、前記命令は、前記コンテンツアイテムの代替バージョンにアクセスするのに有効な選択可能なオプションを含むグラフィカルユーザインタフェース要素を提示するためのものである、システム。
請求項5に記載のシステムであって、前記命令は、前記コンテンツアイテムに関連する協調データを取得するための命令を含み、前記協調データは前記コンテンツアイテムに関連付けられたコメントを含み、前記クライアントデバイスは、
前記コンテンツアイテムに対する変更を検出すことと、
ユーザに前記変更を要約するコメントを提供することを促すことと、
を実行するように構成されたシステム。
請求項5に記載のシステムであって、前記命令は、前記コンテンツアイテムに関連する協調データを取得するための命令を含み、前記協調データは前記コンテンツアイテムに関連付けられたタスクを含み、前記クライアントデバイスは、
前記コンテンツアイテムに対する変更を検出することと、
前記変更に基づいて前記タスクが完了したことを判定することと、
協調グラフィカルユーザインタフェースを前記タスクが完了したことを提示するように更新することと、を実行するように構成された、システム。
請求項14に記載のコンピュータ可読記憶媒体であって、前記メタデータはコンテンツアイテムアクセス命令を含み、前記コンテンツアイテムアクセス命令は、前記コンテンツアイテムを読取専用モードで開くための命令を含む、コンピュータ可読記憶媒体。
請求項14に記載のコンピュータ可読記憶媒体であって、前記メタデータはコンテンツアイテムアクセス命令を含み、前記コンテンツアイテムアクセス命令は、変更制限を含み、前記コンピュータ実行可能命令は、前記クライアントデバイスに、
前記コンテンツアイテムに対する変更を検出することと、
前記コンテンツアイテムに対する前記変更が、前記変更制限により却下されるかを判定することと、
前記コンテンツアイテムの保存を妨げることと、を実行させる、コンピュータ可読記憶媒体。
請求項14に記載のコンピュータ可読記憶媒体であって、前記メタデータは、前記コンテンツアイテムと共に格納されたデジタル著作権管理(DRM)データを含み、前記命令を実行することは、
前記DRMデータに従い、コンテンツアイテムアクセス命令をダウンロードするためにDRMサーバと通信することと、
前記コンテンツアイテムアクセス命令に従って前記コンテンツアイテムを開くことと、を含む、コンピュータ可読記憶媒体。
【発明を実施するための形態】
【0009】
本開示の様々な実施形態が、以下で詳細に説明される。特定の実施形態が説明されているが、これは例示の目的のためだけに行われていることを理解されたい。当業者は、本開示の精神および範囲から逸脱することなく、他の構成要素および構成が使用され得ることを認識するのであろう。
【0010】
開示された技術の様々な実施形態を実装することに関して、例示的なシステム構成100が
図1に示され、電子デバイスは、コンテンツおよび他のデータを交換する目的でネットワークを介して通信する。本システムは、
図1に示すような広域ネットワーク上で使用するように構成することができる。しかし、本原理は、電子デバイスの相互通信を容易にする多種多様なネットワーク構成に適用可能である。例えば、
図1のシステム100の構成要素の各々は、ネットワークにおいてローカライズされたまたは分散された様式で実装され得る。
【0011】
システム100では、ユーザが直接および/または間接通信によってネットワーク104に接続されたクライアントデバイス102
1、102
2、..., 102
n(集合的に「102」)を介して、コンテンツ管理システム106(例えば、オンライン同期コンテンツ管理システム、またはコンテンツ管理システムサーバ)と対話することができる。コンテンツ管理システム106はデスクトップコンピュータ、モバイルコンピュータ、モバイル通信デバイス、例えば、モバイル電話、スマートフォン、タブレット、スマートテレビ、セットトップボックス、および/または任意の他のネットワーク対応コンピューティングデバイスなどの様々な異なるクライアントデバイスからの接続をサポートすることができる。クライアントデバイス102は、様々なタイプ、機能、オペレーティングシステム等のものとすることができる。さらに、コンテンツ管理システム106は、複数のクライアントデバイス102からの接続を同時に受け入れ、複数のクライアントデバイス102とインタラクトすることができる。
【0012】
ユーザは、クライアントデバイス102iにインストールされたネットワーク化されたコンテンツアイテムクライアント側アプリケーションを介して、コンテンツ管理システム106とインタラクトすることができる。いくつかの実施形態では、クライアント側アプリケーションがコンテンツ管理システム特有のコンポーネントを含むことができる。例えば、当該コンポーネントは、スタンドアロンアプリケーション、1つ以上のアプリケーションプラグイン、および/またはブラウザ拡張とすることができる。しかし、ユーザはクライアントデバイス102i上に常駐し、コンテンツ管理システム106と通信するように構成されたウェブブラウザなどのサードパーティアプリケーションを介して、コンテンツ管理システム106とインタラクトすることもできる。いずれの場合も、クライアント側アプリケーションは、ユーザがコンテンツ管理システム106とインタラクトするためのユーザインターフェース(UI)を提示することができる。例えば、ユーザは、ファイルシステムと統合されたクライアント側アプリケーションを介して、またはウェブブラウザアプリケーションを使用して表示されるウェブページを介して、コンテンツ管理システム106とインタラクトすることができる。
【0013】
コンテンツ管理システム106は、ユーザがコンテンツを格納すること、ならびにコンテンツを取得、変更、ブラウジング、および/または共有するなど、様々なコンテンツ管理タスクを実行することを可能にすることができる。さらに、コンテンツ管理システム106は、ユーザが複数のクライアントデバイス102からコンテンツにアクセスすることを可能にすることができる。例えば、クライアントデバイス102iは、ネットワーク104を介してコンテンツ管理システム106にコンテンツをアップロードすることができる。その後、同じクライアントデバイス102iまたは他の何らかのクライアントデバイス102jが、コンテンツ管理システム106からコンテンツを取得することができる。
【0014】
様々なコンテンツ管理サービスを容易にするために、ユーザは、コンテンツ管理システム106を用いてアカウントを作成することができる。ユーザアカウントデータベース150は、アカウント情報を維持することができる。ユーザアカウントデータベース150は、登録ユーザのプロファイル情報を格納することができる。場合によっては、ユーザプロファイル内の唯一の個人情報をユーザ名および/または電子メールアドレスとすることができる。しかし、コンテンツ管理システム106は、誕生日、住所、課金情報などの追加のユーザ情報を受け入れるように構成することもできる。
【0015】
ユーザアカウントデータベース150はアカウントタイプ(例えば、無料または有料)、使用情報(例えば、ファイル編集履歴)、許可された最大保存スペース、使用された保存スペース、コンテンツ保存場所、セキュリティ設定、個人コンフィグレーション設定、コンテンツ共有データなどのアカウント管理情報を含むことができる。アカウント管理モジュール124は、ユーザアカウントデータベース150内のユーザアカウント詳細を更新および/または取得するように構成することができる。アカウント管理モジュール124は、コンテンツ管理システム106内の任意の数の他のモジュールとインタラクトするように構成することができる。
【0016】
アカウントはアカウント上で許可された1つまたは複数のクライアントデバイス102から、デジタルデータ、ドキュメント、テキストファイル、オーディオファイル、ビデオファイルなどのコンテンツを格納するために使用することができる。また、コンテンツは、フォルダ、プレイリスト、アルバムなどの異なる挙動と共にコンテンツアイテムをグループ化するためのコレクションを含むことができる。例えば、アカウントは、任意のユーザがアクセス可能なパブリックフォルダを含むことができる。公開フォルダには、webアクセス可能なアドレスを割り当てることができる。ウェブアクセス可能な宛先へのリンクは、パブリックフォルダのコンテンツにアクセスするために使用することができる。別の例では、アカウントは、写真用に意図され、写真用に調整された特定の属性およびアクションを提供する写真コレクション、オーディオファイルを再生し、他のオーディオ関連アクションを実行する能力を提供するオーディオコレクション、または他の特殊目的コレクションを含むことができる。アカウントはまた、複数のユーザアカウントにリンクされ、利用可能な共有コレクションまたはグループコレクションを含むことができる。複数のユーザに対する許可は、共有コレクションに対して異なっていてもよい。
【0017】
コンテンツは、コンテンツストレージ160に記憶することができる。コンテンツストレージ160は、記憶装置、複数の記憶装置、またはサーバとすることができる。代替として、コンテンツストレージ160は、1つ以上の通信ネットワークを介してアクセス可能なクラウド・ストレージ・プロバイダまたはネットワーク・ストレージとすることができる。コンテンツ管理システム106はクライアントデバイス102がコンテンツ管理システム106によってコンテンツアイテムがどこに、またはどのように格納されているかを正確に知る必要がないように、クライアントデバイス102から複雑さおよび詳細を隠すことができる。いくつかの実施形態では、コンテンツ管理システム106がコンテンツアイテムがクライアントデバイス102i上に現れるのと同じコレクション階層内にコンテンツアイテムを格納することができる。しかし、コンテンツ管理システム106は、コンテンツアイテムをそれ自体の順序、配置、または階層で格納することができる。
【0018】
コンテンツ管理システム106は、コンテンツアイテムを、NAS(ネットワークアクセス可能ストレージ)装置、RAID(独立ディスクの冗長アレイ)などに格納することができる。コンテンツストレージ160は、FAT、FAT32、NTFS、EXT2、EXT3、EXT4、HFS/HFS+、BTRFSなどの1つ以上のパーティションタイプを使用してコンテンツアイテムを格納することができる。
【0019】
コンテンツストレージ160はまた、コンテンツアイテム、コンテンツアイテムタイプ、および様々なアカウント、コレクション、またはグループに対するコンテンツアイテムの関係を記述するメタデータを格納することができる。コンテンツアイテムのメタデータはコンテンツアイテムの一部として格納することができ、または別々に格納することができる。一変形例では、コンテンツストレージ160に格納された各コンテンツアイテムに、システム全体にわたる一意の識別子を割り当てることができる。
【0020】
コンテンツストレージ160は、重複コンテンツアイテムまたはコンテンツアイテムの重複セグメントを識別することによって必要とされるストレージスペースの量を低減することができる。複数のコピーを格納する代わりに、コンテンツストレージ160は単一のコピーを格納し、次いで、ポインタまたは他のメカニズムを使用して、複製を単一のコピーにリンクすることができる。同様に、コンテンツストレージ160はコンテンツアイテムへの変更、コンテンツアイテムの異なるバージョン(分岐バージョンツリーを含む)、および変更履歴を追跡するコンテンツアイテムバージョンコントロールを使用することによって、コンテンツアイテムをより効率的に格納することができ、また、アンドゥ動作の能力を提供することができる。変更履歴は、元のコンテンツアイテムバージョンに適用されると、変更されたコンテンツアイテムバージョンを生成する1組の変更を含むことができる。
【0021】
コンテンツ管理システム106は、1つ以上のクライアントデバイス102からのコンテンツの自動同期をサポートするように構成することができる。同期は、プラットフォーム非依存とすることができる。すなわち、コンテンツは、様々なタイプ、機能、オペレーティングシステムなどの複数のクライアントデバイス102にわたって同期させることができる。例えば、クライアントデバイス102iはクライアントソフトウェアを含むことができ、クライアントソフトウェアは、コンテンツ管理システム106の同期モジュール132を介して、クライアントデバイス102iのファイルシステム内のコンテンツを、関連するユーザアカウント内のコンテンツと同期させる。場合によっては、クライアントソフトウェアが新しい、削除された、変更された、コピーされた、または移動されたコンテンツアイテムまたはコレクションなど、指定されたコレクションおよびそのサブコレクション内のコンテンツに対する任意の変更を同期させることができる。クライアントソフトウェアは別個のソフトウェアアプリケーションとすることができ、オペレーティングシステム内の既存のコンテンツ管理アプリケーションと統合することができ、またはそれらの何らかの組合せとすることができる。既存のコンテンツ管理アプリケーションと統合するクライアントソフトウェアの一例では、ユーザがローカルコレクション内のコンテンツアイテムを直接操作することができ、一方、バックグラウンドプロセスは変更についてローカルコレクションを監視し、それらの変更をコンテンツ管理システム106に同期させる。逆に、バックグラウンドプロセスはコンテンツ管理システム106で更新されたコンテンツを識別し、それらの変更をローカルコレクションに同期させることができる。クライアントソフトウェアは同期動作の通知を提供することができ、コンテンツ管理アプリケーション内でコンテンツ状態の指示を直接提供することができる。場合によっては、クライアントデバイス102iが利用可能なネットワーク接続を有さなくてもよい。このシナリオでは、クライアントソフトウェアがコンテンツアイテムの変更についてリンクされたコレクションを監視し、ネットワーク接続が利用可能であるときに、コンテンツ管理システム106への後の同期のために、これらの変更をキューに入れることができる。同様に、ユーザは、コンテンツ管理システム106との同期を手動で開始、停止、一時停止、または再開することができる。
【0022】
ユーザは、ユーザインターフェース部122によって生成され、提供されるウェブインターフェースを介して、コンテンツを閲覧または操作することができる。例えば、ユーザは、ウェブブラウザにおいて、コンテンツ管理システム106によって提供されるウェブアドレスにナビゲートすることができる。コンテンツアイテムの新しいバージョンをアップロードするなど、ウェブインターフェースを介して行われるコンテンツストレージ160内のコンテンツの変更または更新は、ユーザのアカウントに関連付けられた他のクライアントデバイス102に戻るように伝播することができる。例えば、それぞれが独自のクライアントソフトウェアを有する複数のクライアントデバイス102を単一のアカウントに関連付けることができ、アカウント内のコンテンツアイテムを複数のクライアントデバイス102のそれぞれの間で同期させることができる。
【0023】
コンテンツ管理システム106は様々なクライアントデバイス102とインタフェースするための通信インタフェース120を含むことができ、アプリケーションプログラムインターフェース(API)を介して他のコンテンツおよび/またはサービスプロバイダ109
1、109
2、...,109
n(集合的に「109」)とインタラクトすることができる。特定のソフトウェアアプリケーションは、ユーザの代わりにAPIを介してコンテンツストレージ160にアクセスすることができる。例えば、スマートフォンまたはタブレットコンピューティングデバイス上で実行されるアプリなどのソフトウェアパッケージはユーザが認証情報(credentials)を提供するときに、コンテンツ管理システム106に直接呼び出しをプログラム的に行って、コンテンツを読み取り、書き込み、作成、削除、共有、または他の方法で操作することができる。同様に、APIは、ユーザがウェブサイトを介してコンテンツストレージ160の全部または一部にアクセスすることを可能にすることができる。
【0024】
コンテンツ管理システム106はまた、認証モジュール126を含むことができ、認証モジュール126は許可されたクライアントおよびユーザのみがコンテンツアイテムにアクセスできることを確実にするために、ユーザ信用情報、セキュリティトークン、API呼び出し、特定のクライアントデバイスなどを検証することができる。さらに、コンテンツ管理システム106は、集合ファイル操作、ユーザアクション、ネットワーク使用量、使用される全格納スペース、ならびに他の技術、使用量、またはビジネスメトリックについて追跡し、報告することができる分析モジュール134を含むことができる。プライバシーおよび/またはセキュリティポリシーは、コンテンツ管理システム106に格納されたユーザデータへの不正アクセスを防止することができる。
【0025】
コンテンツ管理システム106は、公的にまたは私的にコンテンツを共有することを管理するための共有モジュール130を含むことができる。コンテンツを公に共有することは、コンテンツ管理システム106とネットワーク通信する任意のコンピューティングデバイスからコンテンツアイテムにアクセス可能とすることを含むことができる。コンテンツを私的に共有することは、各ユーザアカウントがコンテンツアイテムにアクセスできるように、コンテンツストレージ160内のコンテンツアイテムを2つ以上のユーザアカウントにリンクすることを含むことができる。共有は、プラットフォーム非依存の手法で実行することができる。すなわち、コンテンツは、様々なタイプ、機能、オペレーティングシステムなどの複数のクライアントデバイス102にわたって共有することができる。コンテンツは、様々なタイプのユーザアカウントにわたって共有することもできる。
【0026】
いくつかの実施形態では、コンテンツ管理システム106がコンテンツストレージ160内の各コンテンツアイテムの位置を識別するコンテンツディレクトリを維持するように構成することができる。コンテンツディレクトリは、コンテンツストレージに格納された各コンテンツアイテムについての一意のコンテンツエントリを含むことができる。
【0027】
コンテンツエントリは、コンテンツ管理システム内のコンテンツアイテムの位置を識別するために使用することができるコンテンツパスを含むことができる。例えば、コンテンツパスは、コンテンツアイテムの名前と、コンテンツアイテムに関連するフォルダ階層とを含むことができる。例えば、コンテンツパスは、コンテンツアイテムが配置されるフォルダまたはフォルダのパス、ならびにコンテンツアイテムの名前を含むことができる。コンテンツ管理システム106は、コンテンツパスを使用して、適切なフォルダ階層内にコンテンツアイテムを提示することができる。
【0028】
コンテンツエントリはまた、コンテンツストレージ160内のコンテンツアイテムの位置を識別するコンテンツポインタを含むことができる。例えば、コンテンツポインタは、メモリ内のコンテンツアイテムの正確な格納アドレスを含むことができる。いくつかの実施形態では、コンテンツポインタはそれぞれがコンテンツアイテムの一部を含む複数のロケーションを指し示すことができる。
【0029】
コンテンツパスおよびコンテンツポインタに加えて、コンテンツエントリは、コンテンツアイテムへのアクセスを有するユーザアカウントを識別するユーザアカウント識別子も含むことができる。いくつかの実施形態では、複数のユーザアカウント識別子を、コンテンツアイテムが複数のユーザアカウントによる共有アクセスを有することを示す単一のコンテンツエントリに関連付けることができる。
【0030】
コンテンツアイテムを私的に共有するために、共有モジュール130を、コンテンツアイテムに関連するコンテンツエントリにユーザアカウント識別子を追加し、したがって、追加されたユーザアカウントにコンテンツアイテムへのアクセスを許可するように構成することができる。共有モジュール130はまた、コンテンツアイテムへのユーザアカウントのアクセスを制限するために、コンテンツエントリからユーザアカウント識別子を除去するように構成され得る。
【0031】
コンテンツを公に共有するために、共有モジュール130をユニフォーム・リソース・ロケータ(URL)などのカスタム・ネットワーク・アドレスを生成するように構成することができ、これにより、任意のウェブブラウザが、認証なしにコンテンツ管理システム106内のコンテンツにアクセスすることが可能になる。これを達成するために、共有モジュール130は生成されたURLにコンテンツ識別データを含めるように構成することができ、これは、後に、要求されたコンテンツアイテムを適切に識別し、返すために使用することができる。例えば、共有モジュール130は、生成されたURL内にユーザアカウント識別子およびコンテンツパスを含むように構成することができる。URLを選択すると、URLに含まれるコンテンツ識別データをコンテンツ管理システム106に送信することができ、コンテンツ管理システム106は受信したコンテンツ識別データを使用して、適切なコンテンツエントリを識別し、コンテンツエントリに関連するコンテンツアイテムを返すことができる。
【0032】
URLを生成することに加えて、共有モジュール130は、コンテンツアイテムに対するURLが作成されたことを記録するように構成することもできる。いくつかの実施形態では、コンテンツアイテムに関連するコンテンツエントリが、コンテンツアイテムに対するURLが作成されたかどうかを示すURLフラグを含むことができる。例えば、URLフラグはコンテンツアイテムに対するURLが作成されていないことを示すために、最初に0または偽に設定されたブール値とすることができる。共有モジュール130は、コンテンツアイテムへのURLを生成した後、フラグの値を1または真に変更するように構成することができる。
【0033】
いくつかの実施形態では、共有モジュール130が生成されたURLを非アクティブ化するように構成することもできる。例えば、各コンテンツエントリは、生成されたURLからの要求に応答してコンテンツを返すべきかどうかを示すURLアクティブフラグを含むこともできる。例えば、共有モジュール130はURLアクティブフラグが1または真に設定されている場合にのみ、生成されたリンクによって要求されたコンテンツアイテムを返すように構成することができる。このように、URLアクティブフラグの値を変更することにより、URLが生成されたコンテンツへのアクセスを容易に制限することができる。これにより、ユーザはコンテンツアイテムを移動したり、生成されたURLを削除したりすることなく、共有コンテンツアイテムへのアクセスを制限することができる。同様に、共用モジュール130はURLアクティブフラグの値を再び1または真に変更することにより、URLを再活性化することができる。したがって、ユーザは、新しいURLを生成する必要なく、コンテンツアイテムへのアクセスを容易に復元することができる。
【0034】
コンテンツ管理システム106には特定のコンポーネントが提示されているが、当業者であれば、システム106のアーキテクチャ上の構成は単に1つの可能性のある構成であり、より多くのまたはより少ないコンポーネントを有する他の構成も可能であることを理解されたい。
【0035】
図2は、様々な実施形態に従う、コンテンツアイテムのカーネルレベルファイルイベントを検出するための例示的な方法200を示す。例示的な方法200を実行するシステム(例えば、クライアントデバイス102)は、開始すると、コンテンツアイテムのカーネルレベルファイルイベントを検出することができる(ステップ202)。コンテンツ管理システムクライアントアプリケーションは例示的な方法200の少なくともいくつかを実行するために、クライアントデバイス102上のオペレーティングシステムのためのカーネル拡張を有することができる。本明細書で使用される「カーネル」は、ハードウェアとインタフェースするタスクを管理するオペレーティングシステムの中心部分である。「ハードウェア」は物理ハードウェア、シミュレートされたハードウェア(例えば、仮想マシン、ネットワークリソース、ドライブのパーティション、バッファ、RAMなどにおける。)、またはハードウェアコンポーネントの同様の機能を有する任意のシステムを意味し得ることを理解されたい。同様に、「カーネル・レベル・ファイル・イベント」は、ファイル、コンテンツアイテム、またはハードウェア(または同様の)レベルのリソースを扱う任意のイベントとすることができる。例えば、ファイルのロード(例えば、ファイルのオープンまたはアクセス)、ファイルの保存、ファイルの変更、ファイルプロパティへのアクセス、ファイルプロパティの変更、ファイルの移動、ファイルの複製、ファイルのデフラグなどである。カーネル・レベル・ファイル・イベントはたとえそれが達成されなくても(例えば、もはや存在しないファイルにアクセスしようと試みること、十分な許可なしにファイルを開こうと試みることなど)、前述のいずれか1つを行う試みとすることができることを理解されたい。カーネル・レベル・ファイル・イベントは、クライアントデバイス102のオペレーティングシステムのカーネルにインストールされた、クライアントデバイス102のカーネル拡張を使用して検出することができる。
【0036】
いくつかの実施形態ではカーネル・レベル・ファイル・イベントがステップ202を直接トリガすることができ、あるいはシステムがカーネル・レベル・ファイル・イベントを(例えば、ログを参照することによって)監視し、そのようなイベントがログ内で検出されたときにステップ202を開始することができる。いくつかの実施形態ではステップ202がカーネル・レベル・ファイル・イベントに対するデフォルトのオペレーティングシステムの動作を一時停止または中断する(例えば、プログラムがファイルを開くようにオペレーティングシステムに指示した場合、ステップ202はファイルの開きを一時的に停止するか、または少なくとも一時的に防止する)、或いは、カーネル・レベル・ファイル・イベントに対するデフォルトの動作は例示の方法200と並行して実行することができる。カーネル・レベル・ファイル・イベントはローカル・ファイル・システム(例えば、ファイルブラウザ)へのグラフィカル・ユーザ・インターフェースによってトリガすることができる。いくつかの実施形態では、カーネル・レベル・ファイル・イベントがローカル・ファイル・システムへのインタフェース(例えば、アプリケーション・プログラミング・インターフェース)によってトリガされる。
【0037】
システムはコンテンツアイテムのためのファイルイベント命令を継続し、取り出すことができる(ステップ204)。ファイルイベント命令は、コンテンツアイテムに関連する命令を含む、任意のタイプの命令とすることができる。例えば、命令はグラフィカルユーザインタフェースオブジェクトを表示すること、カーネルレベルファイルイベントを遅延させること、(例えば、コンテンツ管理システム106、別のクライアントデバイス102、クライアントデバイス102上のモジュール、コンテンツアイテムに関連するユーザアカウントなどへ)コンテンツアイテムについてのメッセージを送信すること、コンテンツアイテムを復号/暗号化すること、コンテンツアイテムについての警告を表示すること、コンテンツアイテムを変更すること、コンテンツアイテムをスキャンすること、コンテンツアイテムを複製すること、コンテンツアイテムについての協調(collaboration)情報を取り出すこと、(例えば、もしファイルイベントがコンテンツアイテムスタブに対応する場合に)コンテンツアイテムの完全なバージョンを取り出すこと、を含むことができる。
【0038】
ファイルイベント命令は、コンテンツ管理システム106および/またはクライアントデバイス102から取り出すことができる。例えば、ファイルイベント命令は、コンテンツ管理システム106に格納され、クライアントデバイス102によって取り出され得る。ファイルイベント命令は、コンテンツアイテムに関連するか、またはコンテンツアイテム内に位置するメタデータから取り出すことができる。いくつかの実施形態では、メタデータがファイルイベント命令の位置を識別するアドレスまたはポインタを含む。いくつかの実施形態では、(例えば、コンテンツアイテムを開く前に協調画面を開くための)一般的な命令は複数のコンテンツアイテムに適用することができ、一般的な命令の実装はコンテンツアイテムの特性(例えば、ファイルタイプ、タグ、許可、メタデータなど)に基づいて、コンテンツアイテムに特有であり得る。これは、例えば、コンテンツアイテム識別子を使用して、一般的なファイルイベント命令をコンテンツアイテムに特有に適応させることによって達成することができる。
【0039】
次いで、システムは、ファイルイベント命令を実行することができる(ステップ206)。本明細書では、様々な実施形態、例えば、ステップ206のための従属的方法が開示される。いくつかの実施形態では、クライアントデバイス102がステップ202、204、および/または206のいずれか1つのレポートをコンテンツ管理システム106に送信することができる。
【0040】
ステップ206の例示的な命令は、コンテンツ管理システム106と協働してコンテンツアイテムを処理または提示するための命令を含むことができる。例えば、コンテンツ管理システム106はクライアントデバイス102にアクセス命令(例えば、読み出し専用モード、フルアクセスモード、または限定アクセスモードでコンテンツアイテムを開くため)を送信することができ、コンテンツアイテムを開くアプリケーションは、アクセス命令に従ってコンテンツアイテムを開くことができる。
【0041】
図3は、様々な実施形態に従う例示的な方法300を示す。例えば、例示的な方法300は、(ステップ206の)イベント命令を実行する例とすることができる。クライアントデバイス102は開始すると、コンテンツアイテム(すなわち、例示的な方法200のコンテンツアイテム)に関する協調データを要求することができる(ステップ302)。協調データの要求は、コンテンツ管理システム106に送信することができる。いくつかの実施形態では、要求がコンテンツアイテム識別子(例えば、ファイル名、パス、ハッシュなど)を含む。要求は、コンテンツ管理システム106上のユーザアカウントに関連するアカウント識別子を使用して認証することができる。
【0042】
次いで、コンテンツ管理システム106は、コンテンツアイテムに関する協調データを送信することができる(ステップ304)。例えば、ステップ304はコンテンツアイテムに関連するコメント、変更履歴(例えば、変更ログ)、タスク/割り当て、ステータス(例えば、1人以上のユーザが現在文書を編集または閲覧しているかどうか、コンテンツアイテムがアクセス可能であるかどうか)などを送信することを含むことができる。いくつかの実施形態では、協調データが主にコンテンツアイテムに向けられ、特定のユーザアカウントに向けられない。代替的にまたは追加的に、協調データは要求に関連するユーザアカウントに基づくことができる(例えば、協調データをフィルタリングすることができる)。例えば、ユーザはコンテンツアイテムに関連する制限的な許可を有し、コンテンツアイテムに関連する全てのコメントにアクセスすることが許可されない場合がある。
【0043】
協調データはコンテンツアイテムに関連する複数のユーザ(例えば、ユーザアカウント)間の調整を容易にすることができる。例えば、ジョイントワークフローは、ユーザにタグ付けすること、ユーザにタスクを割り当てること、コンテンツアイテムについてコメントすること、コンテンツアイテムを共有することなどを含むことができる。
【0044】
コンテンツ管理システム106は、多くの異なる形式で協調データを送信することができる。例えば、ステップ304はクライアントデバイス上でレンダリングするためのレンダリング可能なウェブページ(例えば、HTML)を生成することを含むことができる。あるいは、コンテンツ管理システム106が協調データをデータオブジェクト(例えば、JSONファイル、XMLデータ、または任意の他のタイプのデータオブジェクト)として送信することができる。
【0045】
いくつかの実施形態では、ステップ304がステップ302の前に(例えば、同期処理中に)実行される。
【0046】
クライアントデバイス102はコンテンツ管理システム106から協調データを継続し、受信することができる。次いで、クライアントデバイス102は、コンテンツアイテムに関する協調データを提示することができる(ステップ306)。いくつかの実施形態では、ステップ306がコンテンツ管理システム106によって生成されたウェブサイトのウェブビューを提示することを含む。コンテンツアイテムに関連する協調データは、コンテンツアイテムをオープンするアプリケーションとは異なるアプリケーションによって提示することができる。
【0047】
クライアントデバイス102はコンテンツアイテムを継続し、提示することができる(ステップ308)。ステップ308はコンテンツアイテムアプリケーション、すなわち、コンテンツアイテムを開くアプリケーションによって実行することができる。クライアントデバイス102は、協調データのプレゼンテーションの横、後ろ、前などにコンテンツアイテムを提示することができる。コンテンツアイテムに関連する協調データの提示はコンテンツアイテムを開き続けるためのオプションを含むことができ、いくつかの実施形態では、クライアントデバイス102がユーザがそのオプションを選択することに応答してステップ308を実行することができる。クライアントデバイス102は、協調データの提示がクローズされるか、または他の方法でデフォーカスされた後にステップ308を実行することができる。
【0048】
いくつかの実施形態では、コンテンツアイテムのメタデータをワークフローデータと呼ぶことができ、コンテンツ管理システム106をワークフローサーバと呼ぶことができる。
【0049】
いくつかの実施形態では、クライアントデバイス102がコンテンツアイテムのプレゼンテーション内で協調データを提示する。例えば、協調データがコメントを含む場合、クライアントデバイス102は、コンテンツアイテム内にコメントを挿入することができる。
【0050】
図4は、様々な実施形態に従う例示的な方法400を示す。例示的な方法400は、ステップ206の従属的方法とすることができる。いくつかの実施形態では、コンテンツアイテムが暗号化された形式でクライアントデバイス102上に配置されてもよい。例示的な方法400は、コンテンツアイテムが開かれる前に「ジャストインタイム」でコンテンツアイテムを復号するために使用することができる。いくつかの実施形態では、コンテンツアイテムがファイルタイプがネイティブに暗号化をサポートしない(またはファイルタイプのネイティブ暗号化が利用されない)場合であっても、そのレガシー拡張子(例えば、テキストファイルの場合は「txt」)を保持する。クライアントデバイス102は、開始すると、ユーザに認証情報を要求することができる(ステップ402)。ステップ402は、コンテンツアイテムが暗号化されていること、およびユーザが関連する認証情報を供給できることを示すグラフィカルユーザインターフェースウィンドウを提示することを含むことができる。例えば、ユーザは、アカウント識別子及びパスワードをコンテンツ管理システム106上のアカウントに供給することができる。
【0051】
次に、クライアントデバイス102は、認証情報をコンテンツ管理システム106に送信することができる(ステップ404)。いくつかの実施形態では、ステップ404がデバイス記述子(例えば、クライアントデバイス102が電話、タブレット、ラップトップ、デスクトップなどであることを示す)、デバイス識別子(例えば、クライアントデバイス102のシリアル番号、MACアドレスなど)、クライアントデバイス102の地理的位置情報などの追加情報を送信することを含む。この追加情報はコンテンツ管理システム106に、コンテンツアイテムのロック解除を許可するかどうかを通知することができる。例えば、データ紛失防止システムでは、ユーザが認可されており、ユーザが認可されたデバイスを使用していることが重要であり得る。
【0052】
次いで、コンテンツ管理システム106は、認証情報をアクセス制御リストと比較することができる(406)。アクセス制御リストは、コンテンツアイテム、コンテンツアイテムを含むフォルダ、要求ユーザ、および/またはユーザグループに関連付けることができる。アクセス制御リストは、どのユーザ、ロケーション、デバイス、時間などがコンテンツアイテムにアクセスできるかを指定することができる。
【0053】
次に、コンテンツ管理システム106は、認証情報が有効であるかどうかを判定することができる(ステップ408)。それらが有効でない場合、コンテンツ管理システム106は、認証情報が無効であることをクライアントデバイス102に通知することができる。クライアントデバイス102はステップ402に戻り、ユーザに認証を要求することができる。適切な認証情報なしでは、クライアントデバイス102は、コンテンツアイテムへのアクセスを拒否することができる。
【0054】
ステップ408において、コンテンツ管理システム106が認証情報が有効であると判定した場合、コンテンツ管理システム106は、クライアントデバイス102にコンテンツアイテムを復号することを許可することができる(ステップ410)。例えば、コンテンツアイテムを復号するための命令を送信することができ、および/またはコンテンツアイテムを復号するための復号鍵を送信することができる。
【0055】
次に、クライアントデバイス102は、コンテンツアイテムを開くことができる(ステップ412)。これは、様々な手段によって達成することができる。例えば、クライアントデバイス102はファイルシステム内で、コンテンツアイテムの暗号化されたバージョンをコンテンツアイテムの復号されたバージョンで置き換えることができる。別の例は、(コンテンツアイテムの暗号化されたバージョンをそのままにしておきつつ)コンテンツアイテムの復号されたバージョンを一時的な場所に保存すること、および、一時的な保存場所から復号されたバージョンを開くこととを含む。別の例は、コンテンツアイテムを復号することと開くことの両方を行うアプリケーションに復号鍵を渡すことを含む。いくつかの実施形態では、元のファイルイベントが例示的な方法400のステップが実行されるまで一時停止される。これにより、クライアントデバイス102はオペレーティングシステムまたはイベント生成プログラムの余分な設定を必要とせずに、コンテンツアイテムをジャストインタイムで変更する(例えば、記憶媒体上のコンテンツアイテムを置換する)ことができる。この技法は本明細書で開示される複数の概念に適用することができ、例示的な方法400に限定されるべきではない。
【0056】
いくつかの実施形態では、ステップ406および408がクライアントデバイス102上で実行される。例えば、セキュリティアプリケーションは、認証情報を検証することができる。いくつかの実施形態では、認証情報により復号鍵を直接生成する(例えば、認証情報のハッシュが鍵であってもよい)。
【0057】
図5は、様々な実施形態に従う例示的な方法500を示す。例示的な方法500は、コンテンツアイテムのアクセス状態に基づいてコンテンツアイテムの提示を適応させるための従属的方法、またはステップ206の代替ステップとすることができる。例えば、別のクライアントデバイス102の別のユーザがコンテンツアイテムに現在アクセスしている場合、コンテンツアイテムはコンテンツアイテムにアクセスしようとしているユーザ(すなわち、そのトリガされた例示的な方法500)に対して「ロック」され、そのユーザがコンテンツアイテムを変更することを防止することができる。
【0058】
クライアントデバイス102は、開始すると、コンテンツ管理システム106にコンテンツアイテムアクセス状態を要求することができる(ステップ502)。アクセス状態は、コンテンツアイテムがユーザ(例えば、ユーザアカウント)によって、現在開かれているか、変更されているか、または予約されているという指示を含むことができる。アクセス状態は、アクセス状態に起因する1以上のユーザの指示を含むことができる。例えば、ユーザXは、現在、コンテンツアイテムを視聴している。
【0059】
次いで、コンテンツ管理システム106は、別のユーザが別のデバイス上でコンテンツアイテムに現在アクセスしているかどうかを判定することによって、コンテンツアイテムアクセス状態を判定することができる(ステップ504)。ステップ504における「別の装置」は、別のクライアントデバイス102であってもよい。いくつかの実施形態では、ステップ504はコンテンツ管理システム106上のアクセスログを読み取ることを含む。ステップ504は、コンテンツアイテムにアクセスしている可能性がある任意のクライアントデバイス102に問い合わせることを含むことができる。次いで、コンテンツ管理システム106は、コンテンツアイテムアクセス状態をクライアントデバイスに送信することができる(ステップ505)。
【0060】
アクセス状態(ステップ506)が「フルアクセス」または同様のものである場合、クライアントデバイス102は、フルアクセスモードでコンテンツアイテムを開くことができる(ステップ510)。例えば、コンテンツアイテムには、読み取りおよび書き込み許可を割り当てることができる。アクセス状態(ステップ506)が「読み取り専用」または同様のものである場合、クライアントデバイス102は、読み取り専用モードでコンテンツアイテムを開くことができる(ステップ508)。例えば、コンテンツアイテムを保存する機能なしに、コンテンツアイテムを開くことができる。他のアクセス状態も考えられることを理解されたい。例えば、「チェックアウト」アクセス状態は、ユーザがある時間内にコンテンツアイテムを戻すことを要求することができる。
【0061】
いくつかの実施形態では、コンテンツ管理システム106が例示的な方法500を使用して、コンテンツアイテムのファイルアクセス制限を決定することができる。例えば、ステップ504及び505は、コンテンツアイテムに対するファイルアクセス制限を決定することを含むことができる。これは、コンテンツアイテム、要求側ユーザ(例えば、クライアントデバイス102に関連するユーザアカウント)、クライアントデバイス詳細(例えば、クライアントデバイス102の識別子)、クライアントデバイス102のデバイスタイプ(例えば、電話、タブレット、またはラップトップ)、および/またはクライアントデバイス102のロケーション(例えば、地理的位置情報、IPアドレス、またはサブネット)を、コンテンツアイテムのアクセス制御リストと比較することを含むことができる。ファイルアクセス制限は、コンテンツアイテムに現在関連付けられている他のユーザの現在のアクティビティ状態を参照することによって(例えば、コンテンツアイテムが開いているかどうか、コンテンツアイテムに対する保存されていない変更を有しているかどうか等)、追加的にまたは代替的に決定することができる。次いで、コンテンツ管理システム106は、要求に対するファイルアクセス制限を決定することができる。クライアントデバイス102は、ファイルアクセス制限を実施することができる。ファイルアクセス制限は、コンテンツアイテムが読み取り専用、フル、時間制限、または他の制限されたアクセス許可を有するべきであることを示すことを含むことができる。いくつかの実施形態では、ファイルアクセス制限が(例えば、別のユーザアカウントが現在コンテンツアイテムにアクセスしている場合に)コンテンツ管理システム106に保存または同期されるコンテンツアイテムの能力を制限する。いくつかの実施形態では、ファイルアクセス制限がコンテンツアイテムの一部(例えば、文、段落、ページ、行、列、セル、セクションなど)に適用される。いくつかの実施形態では、クライアントデバイス102がファイルアクセス制限を実施せず、単に、ファイルアクセス制限を示す通知を提示するだけである。
【0062】
図6は、様々な実施形態に従う例示的な方法600を示す。例示的な方法600は、ステップ206の従属的方法とすることができる。例示的な方法600はコンテンツアイテムを別の形態で開くことができるように、コンテンツアイテムの動的変換を容易にすることができる。クライアントデバイス102は、ユーザがコンテンツアイテムの代替バージョンまたはローカルバージョンを開くことを望むかどうかをユーザに促すことができる(ステップ602)。「ローカルバージョン」はファイルイベントに関連するコンテンツアイテムのバージョン(すなわち、本明細書で開示される方法が無視されなかった場合に開かれるコンテンツアイテムのバージョン)を意味することができる。「代替バージョン」は、ローカルバージョンから導出することができるコンテンツアイテムの代替表現を意味することができる。例えば、コンテンツアイテムのローカルバージョンは編集可能なテキストドキュメントとすることができ、代替バージョンはポータブルドキュメントフォーマット(例えば、「pdf」)、ピクチャ(例えば、「jpg」)とすることができる。いくつかの実施形態ではコンテンツアイテムの代替バージョンをローカルバージョンとは異なる形式とすることができる。例えば、ローカルコンテンツアイテムがテキストドキュメントである場合、代替バージョンはテキストドキュメントの音声読み上げとすることができる。コンテンツアイテムの代替バージョンは、ローカルバージョンと比較して、より多くのまたはより少ない情報を含むことができる。例えば、代替バージョンは、インラインコメントを含むか、または除外することができる。コンテンツアイテムのローカルバージョンおよびそれぞれの代替バージョンの他の例には以下が含まれる:縮小プログラムコード(ローカル)をフルフォームプログラムコード(代替)として開くことができ、フルドキュメント(ローカル)を要約(代替)として開くことができ、ムービーファイル(ローカル)を、異なるコンテンツフィルタ/解像度/オーディオトラック/サブタイトル/等を利用して開くことができる。(代替)、3D CADモデル(ローカル)はモデルのピクチャまたはビデオツアーとして開くことができ(代替)、プログラム(ローカル)は悪意のあるコードを防止するために保護されたサンドボックス環境で開くことができ(代替)、1つのフォーマット(ローカル)のドキュメントはウェブベースのエディタを使用して開くことができ(代替)、曲サンプル(ローカル)は、有料フルソングとして開くことができ(代替)、ローカルの草案文書(ローカル)は、文書の更新バージョンとして開くことができる(代替)。本明細書で開示されるローカルおよび代替の関係は逆にすることができる。すなわち、「ローカル」バージョンとして参照されるものは、「代替」バージョンとすることができ、逆もまた同様であることを理解されたい。
【0063】
ユーザが代替バージョンを選択した場合、クライアントデバイス102は、コンテンツアイテムをコンテンツ管理システムに送信することができる(ステップ606)。いくつかの実施形態では、クライアントデバイス102が単にコンテンツアイテム識別子をコンテンツ管理システム106に送信することができる。
【0064】
次いで、コンテンツ管理システム106は、コンテンツの代替バージョンを生成することができる(ステップ608)。いくつかの実施形態では、これはコンテンツアイテムを変更すること、またはコンテンツアイテムの代替バージョンを取り出すことを含むことができる。
【0065】
次いで、コンテンツ管理システム106は、コンテンツアイテムの代替バージョンをクライアントデバイスに送信することができる(ステップ610)。いくつかの実施形態では、これはクライアントデバイス102上で提示するためのウェブページコードを送信することを含む。例えば、オリジナルバージョンはテキストドキュメントであってもよく、代替バージョンは、ローカルテキスト編集アプリケーションよりも多くのまたは少ない機能を有するテキストドキュメントのウェブプレゼンテーションであってもよい。
【0066】
次に、クライアントデバイスは、コンテンツアイテムの代替バージョンを提示することができる(ステップ612)。これは、コンテンツアイテムの代替バージョンを含むウェブサイトをレンダリングすることを含むことができる。ステップ602において、ユーザがコンテンツアイテムのローカルバージョンを開くことを選択した場合、クライアントデバイスは、コンテンツアイテムを提示することができる(ステップ604)。いくつかの実施形態では、クライアントデバイス102がコンテンツアイテムのローカルバージョンとコンテンツアイテムの代替バージョンとを同時に提示することができる。
【0067】
いくつかの実施形態では、「ローカル」バージョンはスタブコンテンツアイテムであり、「代替」バージョンは完全なコンテンツアイテムである。用語「スタブ(stub)」はプレースホルダのことであってもよく、当該プレースホルダはファイルブラウザ内の完全なコンテンツアイテムであるように見えるが、実際のコンテンツアイテムは他の場所に位置する。例えば、スタブは、たとえスタブがコンテンツアイテムのコンテンツ(すなわち、実体)の多くを欠いていても、同じ名前、拡張子、メタデータなどを有するファイルとすることができる。スタブはコンテンツアイテムの完全なバージョンであるように、クライアントデバイス102のファイルインターフェース内に現れることができる。クライアントデバイス102はスタブコンテンツアイテムのカーネルレベルイベントを検出し、コンテンツ管理システム106に完全なコンテンツアイテムを要求することができる。次いで、コンテンツ管理システム106はプレゼンテーションのために、完全なコンテンツアイテムをクライアントデバイス102に提供することができる。例えば、完全なバージョンは、ファイルシステム内のスタブを置き換えることができる。代替的に又は追加的に、完全なバージョンは一時的な場所に保存することができ、カーネルレベルファイルイベントは(例えば、コンテンツアイテムのパスを変更することによって)完全なバージョンを指すように変更することができる。コンテンツアイテムを提示する(オープンまたはロードすることを含む)ためのアプリケーションは、スタブが最初に識別されたにもかかわらず、フルバージョンをオープンすることができる。コンテンツアイテムの提示が終了すると(例えば、関連するアプリケーションがコンテンツアイテムを閉じるか、またはコンテンツアイテムを保存すると)、クライアントデバイス102はスタブコンテンツアイテムを更新し、必要であれば、完全なコンテンツアイテムの更新されたバージョンをコンテンツ管理システム106に送信することができる。
【0068】
図7は、様々な実施形態による例示的なファイルイベントウィンドウ700を示す。ファイルブラウザ702からコンテンツアイテム(例えば、コンテンツアイテム704)が選択されると、ファイルイベントウィンドウ700を提示することができる。例えば、ファイルブラウザ702は、コンテンツアイテムにアクセスするための選択を受信すると、コンテンツアイテムのカーネルレベルファイルイベントをトリガすることができる。ファイルイベントウィンドウ700は、前述の方法のステップ206、306、402、および/または602で作成することができる。いくつかの実施形態では、ファイルイベントウィンドウ700は、コンテンツ管理システム106によって生成されたウェブページのレンダリングである。ファイルイベントウィンドウ700は、インタラクティブであってもよく、動的に更新されてもよい。
【0069】
様々なカーネル・レベル・ファイル・イベントが、ファイルイベントウィンドウ700をトリガすることができることを理解されたい。例えば、オープン、(例えば、ネットワークロケーションからの)リクエスト、セーブ、クローズ、リリース、コミット(例えば、変更のコミット)、または関連するアイテムとのアクティビティの開始または完了をシグナリングするためのカーネルレベルファイルイベントは、ファイルイベントウィンドウ700をトリガすることができる。
【0070】
図7では、ファイルイベントウィンドウ700がコンテンツアイテム704の履歴706、タスク708、およびオプション710を含むことができる。いくつかの実施形態では履歴706、タスク708、および/またはオプション710はコンテンツ管理システム106から生成され、さらに、または代替として、それらはコンテンツアイテム704のメタデータによって通知され得る。履歴706はファイル操作履歴(例えば、ファイルが作成、名付け、移動、共有されたとき)、ファイルコンテンツ履歴(例えば、コンテンツアイテム704に対して行われた変更および編集)、コメント履歴(例えば、コンテンツアイテム704に対してユーザが提出したコメント)、閲覧履歴などを含むことができる。
【0071】
タスク708はファイルイベント要求に関連するユーザアカウント(例えば、クライアントデバイス102に関連するユーザアカウント)に割り当てられたタスクを含むことができる。タスク708は、他のユーザアカウントに割り当てられたタスクも含むことができる。いくつかの実施形態では、関連タスクのみが提示される。例えば、(例えば、ファイルイベントをトリガしたユーザによって)行われるべき次のタスクである。タスク708はユーザがタスクの状態(例えば、開始されていない、進行中、または完了)を変更することができるように、変更可能な要素を含むことができる。コンテンツ管理システム106はタスクが完了したかどうかを自動的に判定するために、コンテンツアイテムに対して行われた変更を分析することができる。例えば、タスクが変更履歴付きファイル内の編集をレビューすることである場合、コンテンツ管理システム106は、変更履歴のそれぞれが「受け入れられた」か、さもなくば承認されたことを検出することができる。いくつかの実施形態では、コンテンツ管理システム106は、タスクを完了したものとしてマークする命令を受信することができる。
【0072】
オプション710は、コンテンツアイテムを開くためのオプションを含むことができる。例えば、他のユーザがコンテンツアイテムを開くことを防止することができる。別の例は、現ユーザがコンテンツアイテムを開いていることを、コンテンツアイテムに加入した他人に通知することを含む。選択可能なオプションは、コンテンツアイテムに関連するメッセージを含むチャットウィンドウを開くことができる。
【0073】
ファイルイベントウィンドウ700は、コンテンツアイテムを開き続ける(ボタン712)、ウェブを介してコンテンツアイテムを開く(ボタン714)、またはコンテンツアイテムをキャンセルして開かない(ボタン716)ための選択可能なオプションを含むことができる。ボタン714は(例えば、例示的な方法600と同様に)コンテンツアイテムの代替バージョンを開くことができる。
【0074】
図8は、暗号復号のために使用されるファイルイベントウィンドウ700を示す。例えば、クライアントデバイス102はユーザが暗号化されたコンテンツアイテムを開こうとするときに、ファイルイベントウィンドウ700を提示することができる。次に、ユーザは、自分の認証情報をログイン802に入力することができる。次いで、クライアントデバイス102はコンテンツアイテムを復号するために使用することができる復号鍵を返すことができるコンテンツ管理システム106に認証情報を送信することができ、あるいは、クライアントデバイス102が認証情報から復号を生成することができる。
【0075】
ファイルイベントウィンドウ700は保存またはクローズ時に、ユーザがコンテンツを暗号化することを可能にすることができることを理解されたい。例えば、コンテンツアイテムの保存またはクローズは、カーネルレベルファイルイベントをトリガすることができる。保存時に、ファイルイベントウィンドウ700は、コンテンツアイテムを暗号化する能力をユーザに提供することができる。
【0076】
いくつかの実施形態では、コンテンツアイテムがデジタル著作権管理(DRM)を使用して制御される。例えば、コンテンツアイテムは、鍵を使用して暗号化することができる。カーネル・レベル・ファイル・イベントはコンテンツアイテムをどのように開き、復号するかについての命令をコンピュータに指示することができる。命令はコンピュータをDRMサーバ(例えば、コンテンツ管理システム106または別のサーバ)に向けることができ、DRMサーバは、コンテンツアイテムを復号するための鍵を提供することができる。これは、カーネル・レベル・ファイル・イベントまたはコンピュータに関連するユーザアカウントを検証することを含むことができる。 いくつかの実施形態ではコンテンツアイテムにアクセスする(または開く)ための命令(例えば、DRMデータ)はDRMサーバから取り出される。いくつかの実施形態ではコンテンツアイテムはスタブであり、命令は完全なコンテンツアイテムが位置する場所にコンピュータを導く。新しい位置にあるコンテンツアイテムは、暗号化されていても、暗号化されていなくてもよい。
【0077】
図9は、データ紛失防止のために使用されるファイルイベントウィンドウ700を示す。例えば、コンテンツアイテムは、機密情報を含むように識別することができる。これは、ジャストインタイムまたは前のタイムで起こることができる。コンテンツアイテムが機密情報を含む場合、編集されたバージョンをクライアントデバイス102にローカルに格納することができ、その一方でオリジナルバージョンをコンテンツ管理システム106に格納することができる。オリジナルバージョンを取り出すために、ユーザは自分の認証情報を提供することができ、その結果、オリジナルバージョンを取り出すことができる。いくつかの実施形態ではスタブコンテンツアイテムがクライアント102に格納され、ユーザが認証された後、コンテンツ管理システム106はコンテンツアイテム(またはコンテンツアイテムの適切に編集されたバージョン)をクライアントデバイス102に送信することができる。
【0078】
いくつかの実施形態では、クライアントデバイス102がコンテンツアイテムが保存またはクローズされていることを検出することができる。保存またはクローズのカーネルレベルファイルイベントを検出した後、クライアントデバイス102またはコンテンツ管理システム106は、コンテンツアイテムがおそらく秘密情報を含むことを検出することができる。いくつかの実施形態では、コンテンツアイテムをコミット(例えば、保存)するために、ユーザは認証情報を提供しなければならない。
【0079】
図10は、署名を取得するために使用されるファイルイベントウィンドウ700を示す。例えば、コンテンツアイテムを開くとき、ユーザは、コンテンツアイテムにアクセスするための特定の条項(または条件)に同意すること、またはコンテンツアイテムの受信を承認することを示す署名を提供することができる。例えば、ファイルイベントウィンドウ700は、エンドユーザライセンス契約、著作権通知、非開示契約などを含むことができる。ファイルイベントウィンドウ700はコンテンツアイテムが閉じられたときに提示することができ、ユーザは、コンテンツアイテムのコンテンツに同意したこと、またはそのコンテンツを承認したことを表すことができる。いくつかの実施形態では、ユーザがファイルイベントウィンドウに署名を適用することによって、ユーザ許可を提供することができる。
【0080】
いくつかの実施形態では、クライアントデバイス102が関連するコンテンツアイテムを保存または閉じた後に、署名要求のためのファイルイベントウィンドウ700を提示することができる。そのような署名要求はコンテンツアイテムを許可するためのものであってもよいし、コンテンツアイテムの条項に同意するためのものであってもよい。例えば、マネージャは、コンテンツアイテム内の条項を有効(sign off)にすることができる。
【0081】
クライアントデバイスは、ファイルイベントウィンドウ700によって提供される署名を、コンテンツアイテムのメタデータとして、またはコンテンツアイテムに関連する別個のコンテンツアイテムとして保存することができる。
【0082】
図11は、コンテンツアイテムに関連する予算を追跡するために使用されるファイルイベントウィンドウ700を示す。法律専門家、会計、クリエイティブ・デザインなどの特定の専門家では、プロジェクトのために一定の時間または金額を予算に入れることができる。プロジェクトは例えば契約を作成すること、または絵を描くことなど、コンテンツアイテムに結び付けることができる。ファイルイベントウィンドウ700はコンテンツアイテムに費やされた時間/金額を示し、追跡するために使用することができる。例えば、コンテンツアイテムが開かれたときに、タイマを自動的に開始することができ、コンテンツアイテムが閉じられたときに、タイマを停止することができる。オプションは、コンテンツアイテムが開かれている間に費やされた時間を記録しないように提示することができる。
【0083】
クライアントデバイス102はコンテンツアイテムが開かれ、保存され、または閉じられたというカーネルレベルファイルイベントを受信した後に、タイマウィンドウを提示することができる。いくつかの実施形態では、ファイルイベント命令がファイルイベントウィンドウ700に通知または提示することができるアプリケーションを指す。例えば、
図11では、アプリケーションはタイムキーパアプリケーションであってもよい。他のアプリケーションが、APIまたは同様のものを介して、ファイルイベントウィンドウ700に通知または提示することができることを理解されたい。
【0084】
図12は、映画の購入画面を表示するために使用されるファイルイベントウィンドウ700を示す。例えば、映画コンテンツアイテムはクライアントデバイス102上に常駐することができ、ユーザが映画を開こうとするとき、ファイルイベントウィンドウ700が提示されてユーザは映画を購入またはレンタルすることが可能になる。あるいは、スタブコンテンツアイテムをクライアントデバイス102上に配置することができる。ファイルイベントウィンドウ700は映画の様々なオプション、例えば、「HD」モード、「SD」モード、24時間レンタル、または予告編のみを提示することができる。選択を行った後、支払情報を提供することができ、コンテンツアイテム(例えば、映画)を選択された形式で開くことができる。コンテンツアイテムを開くオペレーティングシステムもアプリケーション(例えば、ムービー・プレーヤ)も、イベントウィンドウ700および本明細書で開示される手順を知覚する必要がないことを認識することが重要である。例えば、映画ファイルは本質的に空であり(例えば、スタブコンテンツアイテム)、予告編のみを含み、低解像度コピー等である「movie.mp4」であり得る。カーネルがコンテンツアイテムを開く命令を送ると、命令を傍受することができ、クライアントデバイスはファイルイベントウィンドウ700を提示することができ、次いで、適切なコンテンツアイテムをダウンロードすることができ、コンテンツアイテムを完全なものに置き換えることができ、コンテンツアイテムを開く命令を再開できる。したがって、コンテンツアイテムを開くアプリケーションは、この追加された機能に適応するように特別に構成される必要はない。
【0085】
図13は、コンテンツアイテムのフォーマット選択オプションを提示するために使用されるファイルイベントウィンドウ700を示す。例えば、ユーザは、映画用のフォーマット、解像度、およびコンテンツフィルタリングを選択することができる。ファイルイベントウィンドウ700のいくつかのオプションは、自動充填することができる。いくつかの実施形態では、ファイルイベントウィンドウ700は提示されず、代わりに、クライアントデバイス102はユーザの嗜好、ユーザの許可、クライアントデバイス102の仕様などに基づいて、コンテンツアイテムの最適なバージョンを自動的に提供することができる。
【0086】
図14は、コンテンツアイテムおよび関連アプリケーションの代替バージョンを提案するために使用されるファイルイベントウィンドウ700を示す。例えば、クライアントデバイス102は、コンテンツアイテムを開くための適切なソフトウェアを有していない場合がある。ファイルイベントウィンドウ700は、クライアントデバイス102上に存在するアプリケーションに対応する代替フォーマットを提案することができる。次いで、クライアントデバイス102またはコンテンツ管理システム106は、選択されたアプリケーションにより開くために、コンテンツアイテムを別のファイル(すなわち、別のファイルフォーマット)に変換することができる。いくつかの実施形態ではユーザがウェブインターフェースを介してコンテンツアイテムを開くために開くオプションを選択することができ、次いで、クライアントデバイス102はコンテンツアイテムをコンテンツ管理システム106に送信することができ、コンテンツ管理システム106はウェブベースのプレゼンテーションのためにコンテンツアイテムを変換することができる。次いで、クライアントデバイス102はコンテンツ管理システム106からウェブURLを受信し、ウェブブラウザを適切なURLに向けることができる。
【0087】
図15は、コンテンツアイテムが保存されるときに変更を記録するために使用されるファイルイベントウィンドウ700を示す。例えば、クライアントデバイス102は、コンテンツアイテムが保存されると、イベントウィンドウ700を提示することができる。ユーザは、コメントボックス1202にコメントを提供することができる。コメントは、保存されている変更を記述することができる。クライアントデバイス102は他のイベントウィンドウ700にコメントを提示することができる(例えば、別のユーザがコンテンツアイテムを開くと、イベントウィンドウ700は、コメントボックス1202からのコメントを示すことができる)。コメントボックス1202からのコメントは、コンテンツ管理システム106と同期させることができる。
図15では、イベントウィンドウ700が他の寄稿者に変更を通知すること、ドキュメントのバージョン番号を増分すること、および/または編集特権を別のユーザに渡すことを含むことができる保存オプション1204を提示することができる。編集特権を渡すことは、コンテンツアイテムを「チェックアウト」する形態とすることができる。編集特権が別のユーザに渡されると、そのユーザだけがコンテンツアイテムを変更することができる。
【0088】
いくつかの実施形態では、アプリケーションがコンテンツアイテムを開いている間に、クライアントデバイス102はコンテンツアイテムの変更を検出することができる。例えば、ユーザはドキュメントの一部を編集することができ、クライアントデバイス102は、変更を検出することができる。次いで、クライアントデバイス102は、コメントボックス1202と同様のグラフィカルユーザインターフェースオブジェクトを提示して、行われたばかりの変更の要約または説明を要求することができる。いくつかの実施形態では、ユーザが特定の変更を行うことを許可されない(例えば、ユーザはコンテンツアイテムの特定の部分のみを変更することができ、および/または特定のタイプの変更のみを行うことができる)。次いで、クライアントデバイス102は、変更が許可されないことをユーザに警告することができる。クライアントデバイス102は変更を取り消し、変更が保存されるのを防止する(例えば、変更の保存を防止する、または変更の同期を防止する)ことができる。
【0089】
コンテンツアイテムが開かれ、保存され、および/または閉じられるときに協調機会を提供することは、レガシーファイルおよびアプリケーションのための協調ワークフローを可能にすることができる。例えば、会社は現代の協調パラダイム(例えば、コメント、通知、タグなど)をサポートしない特定のレガシーアプリケーション、オペレーティングシステム、環境などを使用する必要があり得る。本明細書で開示される原理は、レガシーアプリケーションを破壊することなく、これらおよび他の協調的機能を可能にすることができる。重要なことはこれらの協調的機能をサポートするアプリケーションでさえ、これらの機能のための最適なプレゼンテーションフローを有さない場合があり、例えば、コメントおよびタグはアプリケーション内で見つけることが困難である場合があることである。コンテンツアイテムが開かれる前およびコンテンツアイテムが保存または閉じられた後に協調要素を提示することは、コンテンツアイテムまたはコンテンツアイテムにアクセスするアプリケーションからの気を散らすことなく、ユーザの注意を最大にすることができる。言い換えると、ファイルイベントウィンドウ700はファイルイベント遷移(例えば、開く、セーブ、または閉じる)において(いくつかの実施形態では)提示されるので、ユーザは、アプリケーション内ソリューションよりもファイルイベントウィンドウ700により注意を払うことになる。
【0090】
図16は、コンテンツアイテムエクスポートオプションを提示するために使用されるファイルイベントウィンドウ700を示す。例えば、特定のコンテンツアイテムは別のフォーマットまたはプレゼンテーションにエクスポートされることから利益を得ることができ、ソフトウェアをコンパイルすることができ、3D画像をレンダリングすることができ、ビデオを符号化し、レンダリングすることができ、ドキュメントをポータブル形式で保存することができ、電子メールを送信することができ、ウェブサイトを公開すること等ができる。
【0091】
図17Aおよび
図17Bは、可能性のあるシステム実施形態の例を示す。より適切な実施形態は、本技術を実施する場合、当業者には明らかであろう。当業者はまた、他のシステム実施形態が可能であることを容易に理解するのであろう。
【0092】
図17Aは従来のシステム・バス・コンピューティング・システム構成1700を示し、システムの構成要素は、バス1705を使用して互いに電気通信する。例示的なシステム1700は、処理ユニット(CPUまたはプロセッサ)1710と、読取専用メモリ(ROM)1720およびランダムアクセスメモリ(RAM)1725などのシステムメモリ1715を含む様々なシステム構成要素をプロセッサ1710に結合するシステムバス1705とを含む。システム1700は、プロセッサ1710に直接接続されるか、近接して接続されるか、またはプロセッサ1710の一部として統合される高速メモリのキャッシュを含むことができる。システム1700はプロセッサ1710による迅速なアクセスのために、メモリ1715および/または記憶装置1730からキャッシュ1712にデータをコピーすることができる。このようにして、キャッシュは、データを待つ間のプロセッサ1710の遅延を回避して性能向上を提供することができる。これらおよび他のモジュールは、様々なアクションを実行するようにプロセッサ1710を制御するか、または制御するように構成することができる。他のシステムメモリ1715も同様に使用可能である。メモリ1715は、異なる性能特性を有する複数の異なるタイプのメモリを含むことができる。プロセッサ1710は、任意の汎用プロセッサと、プロセッサ1710を制御するように構成された、記憶装置1730に格納されたモジュール1(1732)、モジュール2(1734)、およびモジュール3(1736)などのハードウェアモジュールまたはソフトウェアモジュールと、ソフトウェア命令が実際のプロセッサ設計に組み込まれた専用プロセッサとを含むことができる。プロセッサ1710は本質的に、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含む、完全に自己完結型のコンピューティングシステムであってもよい。マルチコアプロセッサは、対称であっても非対称であってもよい。
【0093】
コンピューティングデバイス1700とのユーザインタラクションを可能にするために、入力装置1745は、スピーチのためのマイク、ジェスチャまたはグラフィカル入力のためのタッチ感知面、キーボード、マウス、モーション入力、スピーチなど、任意の数の入力機構を表すことができる。出力装置1735は、当業者に知られている多数の出力機構のうちの1つ以上であってもよい。場合によっては、マルチモーダルシステムがユーザがコンピューティングデバイス1700と通信するために複数のタイプの入力を提供可能にすることができる。通信インタフェース1740は一般に、ユーザ入力およびシステム出力を支配および管理することができる。いかなる特定のハードウェア構成に対する動作にも制限はなく、したがって、ここでの基本的な特徴は、改良されたハードウェアまたはファームウェア構成が開発されるにつれて、それらに容易に置き換えることができる。
【0094】
記憶装置1730は不揮発性メモリであり、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(RAM)1725、読取専用メモリ(ROM)1720、およびそれらのハイブリッドなど、コンピュータによってアクセス可能なデータを記憶することができるハードディスクまたは他のタイプのコンピュータ可読媒体とすることができる。
【0095】
記憶装置1730は、プロセッサ1710を制御するためのソフトウェアモジュール1732、1734、1736を含むことができる。他のハードウェアまたはソフトウェアモジュールも考えられる。ストレージデバイス1730は、システムバス1705に接続することができる。一態様では、特定の機能を実行するハードウェアモジュールがその機能を実行するために、プロセッサ1710、バス1705、表示部1735などの必要なハードウェアコンポーネントと関連してコンピュータ可読媒体に格納されたソフトウェアコンポーネントを含むことができる。
【0096】
図17Bは説明した方法を実行し、グラフィカル・ユーザ・インターフェース(GUI)を生成し、表示する際に使用することができるチップセット構成を有するコンピュータシステム1750を示す。コンピュータシステム1750は、開示された技術を実施するために使用することができるコンピュータハードウェア、ソフトウェア、およびファームウェアの一例である。システム1750は、識別された計算を実行するように構成されたソフトウェア、ファームウェア、およびハードウェアを実行することができる任意の数の物理的および/または論理的に異なるリソースを表すプロセッサ1755を含むことができる。プロセッサ1755は、プロセッサ1755への入力およびプロセッサ1755からの出力を制御することができるチップセット1760と通信することができる。この例では、チップセット1760がディスプレイなどの出力デバイス1765に情報を出力し、たとえば、磁気媒体および半導体媒体を含むことができる記憶装置1770から情報を読み取り、記憶装置1770に情報を書き込むことができる。チップセット1760はRAM1775からデータを読み取り、RAM1775にデータを書き込むこともできる。様々なユーザインターフェースコンポーネント1785とインタフェースするためのブリッジ1780が、チップセット1760とインタフェースするために提供され得る。そのようなユーザインターフェースコンポーネント1785は、キーボード、マイク、タッチ検出および処理回路、マウスなどのポインティングデバイスを含むことができる。一般に、システム1750への入力は、様々なソース、機械生成、および/または人間生成のいずれかから来ることができる。
【0097】
チップセット1760は、異なる物理インタフェースを有することができる1つ以上の通信インタフェース1790とインタフェースすることもできる。そのような通信インタフェースは、有線および無線ローカルエリアネットワーク、ブロードバンド無線ネットワーク、ならびにパーソナルエリアネットワークのためのインタフェースを含むことができる。本明細書で開示されるGUIを生成し、表示し、使用するための方法のいくつかのアプリケーションは、物理インタフェースを介して順序付けられたデータセットを受信すること、またはプロセッサ1755が記憶装置1770または1775に記憶されたデータを分析することによって機械自体によって生成されることを含むことができる。さらに、マシンはユーザインターフェースコンポーネント1785を介してユーザから入力を受け取り、プロセッサ1755を使用してこれらの入力を解釈することによって、ブラウジング機能などの適切な機能を実行することができる。
【0098】
例示的なシステム1700および1750は1つ以上のプロセッサ1710を有することができ、または、より大きな処理能力を提供するためにネットワーク化されたコンピュータデバイスのグループまたはクラスタの一部であり得ることが理解されよう。
【0099】
説明を明確にするために、いくつかの例では、本技術が装置、装置コンポーネント、ソフトウェアで実施される方法におけるステップまたはルーチン、またはハードウェアとソフトウェアの組合せを含む機能ブロックを含む個々の機能ブロックを含むものとして提示されてもよい。
【0100】
本明細書で説明されるステップ、動作、機能、またはプロセスのいずれも、ハードウェアおよびソフトウェアモジュールの組み合わせによって、単独で、または他のデバイスと組み合わせて、実行または実装され得る。一実施形態では、ソフトウェアモジュールがクライアントデバイスのメモリおよび/またはコンテンツ管理システムの1つまたは複数のサーバに常駐し、プロセッサがモジュールに関連するソフトウェアを実行するときに1つまたは複数の機能を実行するソフトウェアとすることができる。メモリは、非一時的なコンピュータ可読媒体とすることができる。
【0101】
いくつかの実施形態ではコンピュータ可読記憶装置、媒体、およびメモリはビットストリームなどを含むケーブル信号または無線信号を含むことができる。しかし、言及される場合、非一時的なコンピュータ可読記憶媒体は、エネルギー、搬送波信号、電磁波、および信号自体などの媒体を明示的に除外する。
【0102】
上述の例による方法は、記憶されているか、またはコンピュータ可読媒体から利用可能なコンピュータ実行可能命令を使用して実施することができる。そのような命令は例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに、特定の機能または機能のグループを実行させるか、さもなければ構成させる命令およびデータを含むことができる。使用されるコンピュータリソースの部分は、ネットワークを介してアクセス可能であり得る。コンピュータ実行可能命令は例えば、バイナリ、アセンブリ言語などの中間フォーマット命令、ファームウェア、またはソースコードであってもよい。命令、使用される情報、および/または、説明される例に従った方法の間に生成される情報を格納するために利用されてもよいコンピュータ可読媒体の例は、磁気または光ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワーク化された記憶装置などを含む。
【0103】
これらの開示による方法を実装する装置はハードウェア、ファームウェア、および/またはソフトウェアを備えることができ、様々なフォームファクタのうちの任意のものをとることができる。そのようなフォームファクタの典型的な例には、ラップトップ、スマートフォン、スモールフォームファクタパーソナルコンピュータ、パーソナルデジタルアシスタントなどが含まれる。本明細書で説明する機能は、周辺装置またはアドインカードで実施することもできる。そのような機能は、さらなる例として、異なるチップ間の回路基板上で、または単一のデバイス内で実行される異なるプロセス上で実装することもできる。
【0104】
命令、当該命令を搬送するための媒体、それらを実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、これらの開示に記載された機能を提供するための手段である。
【0105】
添付の特許請求の範囲内の態様を説明するために、様々な例および他の情報が使用されたが、当業者はこれらの例を使用して、様々な実装形態を導出することができるので、特許請求の範囲の限定はそのような例における特定の特徴または構成に基づいて暗示されるべきではない。さらに、いくつかの主題は構造的特徴および/または方法ステップの例に特有の言葉で説明されているが、添付の特許請求の範囲で定義される主題は必ずしもこれらの説明された特徴または動作に限定されないことを理解されたい。例えば、そのような機能は、本明細書で識別されたもの以外のコンポーネントにおいて、異なって分散されるか、または実行されることが可能である。むしろ、記載された特徴およびステップは、添付の特許請求の範囲内のシステムおよび方法の構成要素の例として開示される。