付属の図面の図において、同様の参照符号は同様の要素を指す。
エンドユーザー装置を使ってクラウド・サービスにアクセスするための例示的構成を描くブロック図である。
ユーザー、認可およびトークン・データを記憶するための例示的なデータ形式を描くブロック図である。
二部式のテーブルの形の図1Bのデータ形式の例示的なインスタンスを描く図である。
例示的なマッピング・データを描く図である。
管理ユーザーが自分たちの組織(消費者)リストを閲覧できるようにする管理画面を描く図である。
管理ユーザーが自分たちの現在登録されている装置を閲覧できるようにする管理画面を描く図である。
管理ユーザーが自分たちのプロダクトキーを閲覧できるようにする管理画面を描く図である。
管理ユーザーが自分たちのアプリケーション使用レポートを閲覧できるようにする管理画面を描く図である。
加入者が自分たちの現在加入している加入内容を閲覧できるようにする加入者コンソールのユーザー・インターフェース画面を描く図である。
加入者がアプリケーションのためのアプリケーション設定を閲覧できるようにする加入者コンソールのユーザー・インターフェース画面を描く図である。
加入者がアプリケーション・マーケットプレースを閲覧できるようにする加入者コンソールのユーザー・インターフェース画面を描く図である。
加入者がパッケージ・マーケットプレースを閲覧できるようにする加入者コンソールのユーザー・インターフェース画面を描く図である。
アプリケーションおよびパッケージのプロバイダーがアプリケーションおよびパッケージを管理する、より特定的には現在のアプリケーションを閲覧することができるようにするプロバイダー・コンソールのユーザー・インターフェース画面を描く図である。
アプリケーションおよびパッケージのプロバイダーがアプリケーションおよびパッケージを管理する、より特定的にはアプリケーションを追加/更新することができるようにするプロバイダー・コンソールのユーザー・インターフェース画面を描く図である。
アプリケーションおよびパッケージのプロバイダーがアプリケーションおよびパッケージを管理する、より特定的にはアプリケーションの現在のパッケージを閲覧することができるようにするプロバイダー・コンソールのユーザー・インターフェース画面を描く図である。
アプリケーションおよびパッケージのプロバイダーがアプリケーションおよびパッケージを管理する、より特定的にはパッケージを追加/更新することができるようにするプロバイダー・コンソールのユーザー・インターフェース画面を描く図である。
入力、プロセスおよび出力というコンポーネント・カテゴリーで例示的コンポーネントを描く図である。
SIクラウドのための例示的コンテキストを描くブロック図である。
ユーザーがSIクラウド・コンポーネントのアイコンを作業面にドラッグアンドドロップして、SIクラウド・アプリケーションによって実装される作業フローを生成できるようにする作業フロー・デザイン・ツールによって提供されるユーザー・インターフェースを描く図である。
SIクラウド・コンポーネントおよびSIクラウド・アプリケーションのための開発プロセスを描くブロック図である。
二つの異なるクラウド環境を統合するための手法を描くブロック図である。
ユーザーが作業フローを生成できるようにする作業フロー・ツールのユーザー・インターフェース画面である。
ICEクライアント・アプリケーションまたはウェブ・ブラウザーによって提供される例示的なユーザー・インターフェース画面を描く図である。
裁判所への電子提出のための文書を用意するコンテキストで二つの異なるクラウド環境を統合するための手法を描く流れ図である。
二つの異なるクラウド環境を統合するための手法のもう一つの例を描くブロック図である。
ユーザーが作業フローを生成できるようにする作業フロー・ツールのユーザー・インターフェース画面である。
ICEクライアント・アプリケーションまたはウェブ・ブラウザーによって提供される例示的なユーザー・インターフェース画面を描く図である。
ICEクライアント・アプリケーションまたはウェブ・ブラウザーによって提供される例示的なユーザー・インターフェース画面を描く図である。
ベイツ・ナンバリング印を文書に加えるコンテキストで二つの異なるクラウド環境を統合するための手法を描く流れ図である。
ある実施形態に基づく、二つの異なるクラウド環境を統合するための構成を描くブロック図である。
ベイツ・スタンプ付け作業フローを描くブロック図である。
タイムスタンプ付け作業フローを描くブロック図である。
透かし入れ作業フローを描くブロック図である。
ユーザーが、最終文書の宛先、スタンプ型、出力フォーマット、用紙サイズ、OCRを有効にするかどうか、色および両面オプションならびにファイル名を指定できるようにするユーザー・インターフェース画面を描く図である。
ユーザーが、データに加えられるスタンプ付けの型を指定できるようにするユーザー・インターフェース画面を描く図である。
ユーザーが、標準時ゾーン、垂直および水平方向位置およびフォント設定を含む高度なタイムスタンプ設定を指定できるようにするユーザー・インターフェース画面を描く図である。
ユーザーが、高度なベイツ・スタンプ設定を指定できるようにするユーザー・インターフェース画面を描く図である。
ユーザーが、高度な透かし設定を指定できるようにするユーザー・インターフェース画面を描く図である。
データにマークを加え、次いでマーク付けされたデータをクラウド記憶に記憶するコンテキストで、二つの異なるクラウド環境を統合するための手法を描く流れ図である。
ある実施形態に基づく、コンフリクト検査を使う、二つの異なるクラウド環境を統合するための構成を描くブロック図である。
スタンプ付け/マーク付けアプリケーションによって実装されるスタンプ付け/マーク付け作業フローを描くブロック図である。
データにマークを加え、次いでマーク付けされたデータをクラウド記憶に記憶するコンテキストで、二つの異なるクラウド環境を統合するための手法を描く流れ図である。
さまざまなクラウド・サービスのためのアイコン、特にICEクラウド・アプリケーションのためのアイコンを表示するエンドユーザー装置のための例示的なユーザー・インターフェース画面である。
二つのSIクラウド作業フローのためのアイコンを表示するエンドユーザー装置のための例示的なユーザー・インターフェース画面を描くブロック図である。
図12Bで描かれた「Workflow 1」のための例示的なユーザー・インターフェース画面を描くブロック図である。
直接リンクを使って、SIクラウドおよびICEクラウドを統合するための手法を描く流れ図である。
管理ユーザーが、図14Aにおいて「組織(organization)」と称される、新たなユーザーを追加、すなわち生成することを許容するユーザー・インターフェース画面を描く図である。
管理ユーザーが、前記新たな組織(organization)について管理ユーザーを生成することを許容するユーザー・インターフェース画面を描く図である。
管理ユーザーが、前記新たな組織(organization)について一つまたは複数のパッケージへの加入を生成することを許容するユーザー・インターフェース画面を描く図である。
管理ユーザーが、前記新たな組織(organization)について管理者情報を指定することを許容するユーザー・インターフェース画面を描く図である。
管理ユーザーが、前記組織について会社プロファイルを指定することを許容するユーザー・インターフェース画面を描く図である。
諸実施形態が実装されうるコンピュータ・システムのブロック図である。
以下の記述では、説明の目的で、実施形態の十全な理解を提供するよう数多くの個別的詳細が記載される。しかしながら、当業者は、実施形態がこうした個別的詳細なしでも実施されうることは明白であろう。他方、よく知られた構造および装置は、実施形態を無用に埋没させるのを避けるために、ブロック図の形で示されている。実施形態のさまざまな側面が、下記では、次の分節で記載される。
I.概要
II.アーキテクチャー
A.ICEクラウド
i.ICEクラウド・マネージャ
ii.ICEクラウド・データ
iii.ユーザー、認可およびトークン・データ
B.SIクラウド
i.SIクラウド・コンポーネント
ii.SIクラウド・アプリケーション
iii.SIクラウド・データ
III.SIクラウドおよびICEクラウド環境の統合
A.統合の第1型:SIクラウドによって管理されるエンドツーエンド処理
i.動作例
ii.サードパーティー・サービスのためのトークンを識別するためのマッピング・データの使用
B.統合の第2型:ICEクラウドによって管理される統合
C.統合の第3型:コンフリクト検査のあるICEクラウドによって管理される統合
D.統合の第4型:直接リンク
IV.ユーザーおよび加入の提供
V.実装例。
I.概要
高レベルのプログラミング技量およびカスタマイズなしではエンドユーザー装置上で実装するのが実際的でないまたは困難であるクラウド・サービスへのアクセスを、ある手法が提供する。本稿での用法では、「エンドユーザー装置」とは、任意の型の電子装置を指す。エンドユーザー装置の例は、限定なしに、パーソナル・コンピュータ、ワークステーション、複合機(MFP)、タブレット・コンピューティング装置、モバイル・コンピューティング装置、携帯情報端末、スマートフォンを含む電話機、他の消費者装置などを含む。
本手法は、エンドユーザー装置上で、本稿でスマート統合(SI: Smart Integration)クラウド・サービスと称されるクラウド・サービスの第二の集合にアクセスするために、本稿で統合クラウド環境(ICE)クラウド・サービスと称されるクラウド・サービスの第一の集合を使う。ある実施形態によれば、SIクラウド・サービスは、エンドユーザー装置のユーザーにとって望ましいが、ICEクラウド・サービスを介して利用可能ではない独特のおよび/または複雑な作業フローを実装する。
ICEクラウド・サービスは、エンドユーザー装置とSIクラウド・サービスの間の仲介役のはたらきをし、エンドユーザー装置を介してSIクラウド・サービスにアクセスするためのユーザーフレンドリーなユーザー・インターフェースを提供する。ICEクラウド・サービスは、SIクラウド・サービスのアプリケーション・プログラム・インターフェース(API)を実装し、SIクラウド・サービスによって生成された結果を管理もするが、SIクラウド・アプリケーションによって使われるSIクラウド・コンポーネントのAPIを実装する必要がない。ICEクラウド・サービスは、サードパーティー・サービスにアクセスするために必要とされるユーザー情報、認可クレデンシャルおよびトークンを管理もする。さらに、ICEクラウド・サービスは、ICEクラウド・サービスおよびSIクラウド・サービス両方に関して管理機能を実行するためのユーザー・インターフェースを提供する。
もう一つの実施形態によれば、SIクラウドおよびICEクラウドは、直接リンクを使って、すなわちエンドユーザー装置をSIクラウドに直接リンクすることによって統合される。この手法によれば、エンドユーザー装置のユーザー・インターフェースが、SIクラウドをポイントする埋め込まれたリンクを含むユーザー・インターフェース・オブジェクトを表示する。エンドユーザー装置のユーザーは、該ユーザー・インターフェース・オブジェクトを選択することによって、エンドユーザー装置をSIクラウドと直接接続する。ユーザー・インターフェース・オブジェクトの選択は、ユーザーID、装置識別データおよびトークンのような情報が、SIクラウドに送信されるようにし、それによりSIクラウドは該SIクラウドへのユーザーのアクセスを認可する。
これらの手法は、SIクラウド・サービスを修正したり、SIクラウド・サービスのAPIをエンドユーザー装置上に実装したり、クラウド・サービス処理の結果を管理したり、あるいはサードパーティー・サービスを使うために要求される認可データを含む前記データを管理したりする必要なしに、SIクラウド・サービスによって提供される機能にエンドユーザー装置を介していかにしてアクセスするかという技術的課題に取り組む。技術的解決策は、既存のクラウド・サービス、すなわちクラウド・サービスの第一の集合(ICEクラウド・サービス)をエンドユーザー装置とクラウド・サービスの第二の集合(SIクラウド・サービス)との間の仲介役として使い、また直接リンク手法を使う。
II.アーキテクチャー
図1Aは、エンドユーザー装置を使ってクラウド・サービスにアクセスするための例示的構成100を描くブロック図である。図1Aに描かれた例では、構成100はエンドユーザー装置110、統合クラウド環境(ICE)クラウド120、スマート統合(SI)クラウド150およびサードパーティー・サービス190を含む。
エンドユーザー装置110は、印刷およびスキャン、コピー、ファクシミリなどといった一つまたは複数の機能を実行する装置である。エンドユーザー装置110は、印刷および前記一つまたは複数の他の機能を実行するためのコンピュータ・ハードウェア、コンピュータ・ソフトウェアおよびコンピュータ・ハードウェアとコンピュータ・ソフトウェアの任意の組み合わせを含みうる。これはたとえば、スキャン・コンポーネント、一つまたは複数のプロセッサ、一つまたは複数のメモリ、一つまたは複数の通信インターフェース、たとえば有線および無線インターフェース、オペレーティング・システム、エンドユーザー装置110によって提供される機能をサポートおよび実行するための一つまたは複数のプロセス、タッチスクリーン・ディスプレイのようなディスプレイなどを含んでいてもよい。ある実施形態によれば、エンドユーザー装置110は、他のプロセスと通信するための一つまたは複数の要素を含む。図1Aに描かれる例では、エンドユーザー装置110は、ICEクライアント・アプリケーション112または代替的にウェブ・ブラウザー114を含んでいてもよい。ICEクライアント・アプリケーション112は、ICEクラウド120と通信するよう構成されており、ICEクラウド120の一つまたは複数のアプリケーション・プログラム・インターフェース(API)の少なくとも一部を実装するアプリケーションである。たとえば、ICEクライアント・アプリケーション112は、ICEクラウド120と通信するウェブ・ブラウザー機能を実装してもよい。ウェブ・ブラウザー114は、ICEクラウド120と通信するためのいかなる型のウェブ・ブラウザーであってもよく、エンドユーザー装置110が、ICEクライアント・アプリケーション112のようなそのための特製のアプリケーションなしにICEクラウド120およびSIクラウド150によって提供される機能にアクセスできるようにする。
A.ICEクラウド
ICEクラウド120は、ICEクラウド・マネージャ122、ICEクラウド・アプリケーション130およびICEクラウド・データ140を含むクラウド環境である。ICEクラウド120は、ネットワーク要素、サーバーなどのような一つまたは複数のコンピューティング要素上に実装されてもよく、実施形態はICEクラウド120のためのいかなる特定の実装にも限定されない。ICEクラウド120は、具体的な実装に依存して、図1Aに描かれる要素より少数のまたは追加的な要素を含んでいてもよく、ICEクラウド120はいかなる特定の実装にも限定されない。たとえば、ICEクラウド120は、一つまたは複数のコンピューティング・システム上で実行される一つまたは複数のプロセスによって実装されてもよい。
i.ICEクラウド・マネージャ
ICEクラウド・マネージャ122は、ICEクラウド120を管理する。これは、エンドユーザー装置110および他のクライアント装置からの要求を処理し、ICEクラウド120のためのさまざまな管理タスクを実行することを含む。ICEクラウド・アプリケーション130はICEクラウド・マネージャ122によっておよび/または一つまたは複数のアプリケーション・サーバー・プロセスによって管理されうる。ICEクラウド・アプリケーション130は、さまざまな機能を実行するための幅広い多様なアプリケーションを含んでいてもよい。それは、のちにより詳細に述べるように、SIクラウド150によって提供されるサービスへの接続役としてであってもよい。図1Aに描かれる例では、ICEクラウド・アプリケーション130はOCRアプリケーション132、ベイツ・スタンプ付けアプリケーション134、法廷電子提出、すなわちe提出準備アプリケーション136およびデータ・ストレージ・アプリケーション138を含む。実施形態はこれらのアプリケーションに限定されず、具体的な実装に依存して他のアプリケーションが提供されてもよい。図1Aに描かれていない一例としてのアプリケーションは、モバイル・アプリケーションのためにデータを変換するアプリケーション、たとえばモバイル印刷のためのPDF変換アプリケーションである。
ある実施形態によれば、ICEクラウド・マネージャ122は、ICEクラウド環境を管理するための一つまたは複数のユーザー・インターフェースを提供する。ユーザー・インターフェースは、ウェブ・ベースのユーザー・インターフェースとして、たとえばクライアント装置からの要求に応答して一つまたは複数のウェブ・ページを生成してクライアント装置に提供することによって、実装されてもよい。図2A〜図2Dは、管理ユーザーが、自分の組織(顧客)リスト(図2A)、現在登録されている装置(図2B)、プロダクトキー(図2C)およびアプリケーション使用レポート(図2D)を閲覧できるようにする四つの管理画面を描いている。図2E〜図2Hは、加入者が自分の現在加入している加入を閲覧すること(図2E)、アプリケーションのためのアプリケーション設定を閲覧すること(図2F)、アプリケーション・マーケットプレースを閲覧すること(図2G)およびパッケージ・マーケットプレースを閲覧すること(図2H)ができるようにする加入者コンソールのユーザー・インターフェース画面を描いている。図2I〜図2Lは、アプリケーションおよびパッケージのプロバイダーが、アプリケーションおよびパッケージを管理すること、より特定的には現在のアプリケーションを閲覧すること(図2I)、アプリケーションを追加/更新すること(図2J)、自分のアプリケーションの現在のパッケージを閲覧すること(図2K)およびパッケージを追加/更新すること(図2L)ができるようにするプロバイダー・コンソールのユーザー・インターフェース画面を描いている。ユーザーによって指定された設定は、たとえば管理および構成設定データ142に格納されて、ICEクラウド・アプリケーション130のためのデフォルト設定として使われてもよい。
ii.ICEクラウド・データ
ICEクラウド・データ140は、ICEクラウド120を構成設定し、管理するために使われるデータを含む。図1Aに描かれる例では、ICEクラウド・データ140は、管理および構成設定データ142ならびにユーザー、認可およびトークン・データ144を含む。管理および構成設定データ142は、ICEクラウド・アプリケーション130のための構成設定データ、たとえばICEクラウド・アプリケーション130の名前、バージョン、アプリケーション・プログラム・インターフェース定義および状態を含む。ユーザー、認可およびトークン・データ(user, authorization, and token data)144は、任意の型のユーザー・データ、認可データおよびトークン・データを含みうる。このデータはたとえば、のちにより詳細に述べるように、ICEクラウド・アプリケーション130、SIクラウド・アプリケーション160およびサードパーティー・サービス190にアクセスするために使われる。
iii.ユーザー、認可およびトークン・データ
図1Bは、ユーザー、認可およびトークン・データ(user, authorization, and token data)144のための例示的なデータ形式を描くブロック図である。この例では、本データ形式におけるフィールドは、ユーザー識別情報(ID)、ユーザー・ログインID、組織ID、ファーストネーム、ラストネーム、電子メール・アドレス、ファクス番号、外部アプリケーション・トークン、使用カウントおよび一つまたは複数の装置IDを含む。各フィールドについてのデータは、たとえば、数値、英数字列などを含みうる。図1Bに描かれるフィールドの全部が要求されるわけではなく、具体的な実装に依存して、より少数のまたは追加的なフィールドが使用されてもよい。たとえば、データ形式は、特定のトークンが現在有効であるかどうかを示すブーリアン値を含む「トークン有効」フィールドを含んでいてもよい。ユーザーは、複数のトークン、たとえばいくつかのアプリケーションのそれぞれについて一つのトークンを有していてもよい。これについては、のちにより詳細に述べる。
図1Cは、二部式テーブルの形の図1Bのデータ形式の例示的なインスタンスを描いている。データ形式のインスタンスは、各ユーザーについて、たとえばユーザー、認可およびトークン・データ144(図1A)の一部として生成され、管理されてもよい。ICEクラウド・マネージャ122によって提供されるICEクラウド120を管理するためのユーザー・インターフェースは、ユーザー、認可およびトークン・データ144を含むICEクラウド・データ140を管理するためのユーザー・インターフェースを含んでいてもよい。
本稿で単に「トークン」とも称されるアプリケーション・トークンは、サードパーティー・サービス190およびのちにより詳細に述べるようにSIクラウド150のようなサービスのための、トークン・ベースの認証をサポートするために使われる。トークンは、特定の実装に依存して変わりうるいかなる時間の長さにわたって有効であってもよい。たとえば、トークンは、取り消される/撤回されるまで有効であってもよく、特定の長さの時間にわたって有効であってもよく、すなわち期限切れまで有効であってもよく、特定のトランザクション/機能のために使うために有効であってもよい、などである。特定のユーザーに対し、該ユーザーがアクセスする必要のある複数のサービスのそれぞれについて別個のトークンが発行されてもよく、よって、ユーザーは任意の特定の時刻において複数のトークンを有していてもよい。トークンは、それが使われるサービスによって発行されてもよく、あるいはトークンを発行するよう指定されている他のサービスによって発行されてもよい。トークンは、エンドユーザー装置固有であってもよく、ユーザーが実行しうる機能を定義する対応するパーミッションまたはスコープを有していてもよい。トークンはICEクラウド120において維持され、ICEクラウド・アプリケーション130によって、サードパーティー・サービス190にアクセスするため、および後述するようにエンドユーザー装置およびICEクラウド150の直接統合を提供するために、使用される。
B.SIクラウド
SIクラウド150は、SIクラウド・マネージャ152、SIクラウド・アプリケーション160およびSIクラウド・コンポーネント170およびSIクラウド・データ184を含む。SIクラウド150は、ネットワーク要素、サーバーなどのような一つまたは複数のコンピューティング要素上に実装されてもよく、実施形態はSIクラウド150のためのいかなる特定の実装にも限定されない。SIクラウド150は、具体的な実装に依存して、図1Aに描かれる要素より少数のまたは追加的な要素を含んでいてもよく、SIクラウド150はいかなる特定の実装にも限定されない。たとえば、SIクラウド150は、一つまたは複数のコンピューティング・システム上で実行される一つまたは複数のプロセスによって実装されてもよい。
SIクラウド・マネージャ152はSIクラウド150を管理する。これは、ICEクラウド120およびサードパーティー・サービス190へのおよびからの要求の処理を管理し、SIクラウド150のためのさまざまな管理タスクを実行することを含む。
i.SIクラウド・コンポーネント
SIクラウド・コンポーネント170は、それぞれ一つまたは複数の機能を実装するプロセスである。機能は、いかなる型の機能であってもよく、具体的な実装に依存して変わりうる。ある実施形態によれば、機能は入力機能、出力機能およびプロセス機能を含む。入力および出力機能の例は、限定なしに、装置/トリガー(device/trigger)機能、サービス接続役(service connector)機能およびデータ接続役(data connector)機能を含む。図3Aは、入力、プロセス、出力というコンポーネント・カテゴリーにおいて例示的コンポーネントを描いている。この例において、入力カテゴリーは、文書または文書データの源を表わす。たとえば、スキャンからのスキャン・データ、装置から、たとえば装置ファームウェア情報からの装置情報、装置計測情報(実行されたコピー、プリント、スキャンなどの数)などである。もう一つの型の入力は、リストボックスのようなユーザー定義されたユーザー・インターフェース選択である。ユーザー定義されたユーザー・インターフェース選択は、スプレッドシート、CSVファイル、グーグル・シートなどから生じてもよい。プロセス機能型は、文書に対して実行されうる処理の種々の型に関し、たとえばバーコード認識を含む。
図1Aに描かれた例では、SIクラウド・コンポーネント170は、OCR 172、ファイル分割174、ベイツ・スタンプ付け176、タイムスタンプ付け178および透かし180を含むいくつかのプロセス機能を含む。これらはそれぞれ、OCR、ファイル分割、ベイツ・スタンプ付け、タイムスタンプ付けおよび透かし入れサービスを提供する。これらの例示的コンポーネントは、説明の目的で提供されており、実施形態はこれらの例示的コンポーネントに限定されない。出力機能は、処理された文書データに何が起こるかに関する。たとえば、処理された文書データは、印刷されたり、メールされたり、クラウド・サービスに送られたり、および/またはオンプレミス記憶位置、たとえば特定のサーバー、フォルダーなどに記憶されたりしうる。ある実施形態によれば、SIクラウド・コンポーネント170は、ICEクラウド・アプリケーション130によって実装されない機能を実装する。さらにもう一つの実施形態によれば、諸SIクラウド・アプリケーション160は、共通のユーザー・インターフェースを共有しない。
ある実施形態によれば、SIクラウド・コンポーネント170のそれぞれは、他のSIクラウド・コンポーネントによってサポートされるAPIと同じであっても、あるいは異なっていてもよい特定のAPIをサポートする。SIクラウド・コンポーネント170は、指定された機能を実行するために他のプロセスによって使用されてもよい。たとえば、SIクラウド150の外部のアプリケーションが、光学式文字認識を使って画像データをテキストに変換するOCR 172コンポーネントを使ってもよい。ただし、これは、アプリケーションがOCR 172コンポーネントのAPIを実装することを要求する。
ii.SIクラウド・アプリケーション
SIクラウド・アプリケーション160は、本稿で「作業フロー(workflow)」と称される複数の機能を実行するために一つまたは複数のSIクラウド・コンポーネント170を使うプロセスである。SIクラウド・アプリケーション160は、特定の作業フローを実行するために外部のアプリケーションおよび装置から呼び出されてもよい。たとえば、クライアント装置は、諸SIクラウド・アプリケーション160のうちの特定のSIクラウド・アプリケーションを呼び出して、その特定のSIクラウド・アプリケーションによって提供される作業フローを実行してもよい。
いずれかの特定の作業フローによって実行される機能は、具体的な実装に依存して変わりうる。実施形態はいかなる特定の機能にも限定されない。一例として、ビジネス作業フローは、MFPのようなエンドユーザー装置からスキャン・データを受信し、たとえば光学式文字認識を使って、該スキャン・データをテキスト・データに変換し、該スキャン・データおよび/またはテキスト・データにマーク付けして真正性を確立し、テキスト・データに対してさまざまな型のビジネス処理を実行し、スキャン・データおよびテキスト・データを安全な貯蔵所に、暗号化ありまたはなしで記憶し、一つまたは複数の通知を生成および送信することを含んでいてもよい。通知はたとえば、テキスト・データに対して実行されたビジネス処理の結果、スキャン・データおよび/またはテキスト・データの貯蔵所における成功裏の記憶などを示していてもよい。これは、実装されうる作業フローの単に一例である。
ある実施形態によれば、SIクラウド・アプリケーション160は、SIクラウド・コンポーネント170を使って作業フローを実装する。これはたとえば、諸SIクラウド・アプリケーション160が、特定の作業フローの機能を実行するために一つまたは複数のSIクラウド・コンポーネントを呼び出すことを含んでいてもよい。諸SIクラウド・アプリケーション160は、それが呼び出すSIクラウド・コンポーネント170のAPIをサポートするとともに、作業フローを実行するためにSIクラウド・コンポーネント170によって提供された中間結果を管理するよう構成される。
たとえば、特定のSIクラウド・アプリケーション160が、MFPのようなエンドユーザー装置からのデータを処理する作業フローを実装するために、二つのSIクラウド・コンポーネントAおよびBを使うとする。その特定のSIクラウド・アプリケーションは、たとえばICEクラウド・アプリケーションから、該データを受信する。その特定のSIクラウド・アプリケーションは、SIクラウド・コンポーネントAのAPIに準拠するデータ処理要求を生成する。たとえば、該要求は、SIクラウド・コンポーネントAのAPIによって定義された一つまたは複数のコマンドを、前記データまたは該データへの参照とともに、含んでいてもよい。SIクラウド・アプリケーションは、該要求をSIクラウド・コンポーネントAに送信し、該SIクラウド・コンポーネントAは該データを、前記要求に従って処理し、処理結果を生成する。前記特定のSIクラウド・アプリケーションは、SIクラウド・コンポーネントAから処理結果を受信する。この例では、前記特定のSIクラウド・アプリケーションはまだ作業フローを完了していないので、SIクラウド・コンポーネントAからの処理結果は中間結果であると考えられ、SIクラウド・コンポーネントAからの処理結果はSIクラウド・コンポーネントBへの入力データとして使われる。
特定のSIクラウド・アプリケーションは、SIクラウド・コンポーネントBのAPIに準拠するデータ処理要求を生成する。たとえば、該要求は、SIクラウド・コンポーネントBのAPIによって定義された一つまたは複数のコマンドを、SIクラウド・コンポーネントAから受領された処理結果または該処理結果への参照とともに、含んでいてもよい。この特定のSIクラウド・アプリケーションは、該データ処理要求を処理のためにSIクラウド・コンポーネントBに送信する。SIクラウド・コンポーネントBは前記要求を処理し、処理結果を生成し、処理結果を前記特定のSIクラウド・アプリケーションに提供し返す。この例では、作業フローが完了しているので、SIクラウド・コンポーネントBから受信された処理結果は、最終的な処理結果であると考えられる。上記の例では、前記特定のSIクラウド・アプリケーションがSIクラウド・コンポーネントAおよびBによって実行される処理すべてを管理する。このようにして、前記特定のSIクラウド・アプリケーションを呼び出すICEクラウド・アプリケーションのようなエンティティーは、該特定のSIクラウド・アプリケーションと対話するだけでよく、APIを実装したり、あるいは作業フローを実装するために前記特定のクラウド・アプリケーションによって使われるSIクラウド・コンポーネントの中間結果を管理したりする必要がない。
図1Aに描かれる例では、SIクラウド・アプリケーション160はベイツ・スタンプ付けアプリケーション162および法廷電子提出準備アプリケーション164を含む。これらは、本稿でより詳細に記載される説明の目的のための例示的アプリケーションであり、実施形態はこれらの例示的なSIクラウド・アプリケーションに限定されない。
図3Bは、SIクラウド150についての例示的コンテキストを描くブロック図である。図3Bに描かれる例では、開発者がSIクラウド・コンポーネント170を開発して、SIクラウド150に登録し、ディーラーがクラウド・アプリケーション160を生成して、SIクラウド150に登録する。さらに、顧客は、たとえばMFPのようなエンドユーザー装置からSIクラウド・アプリケーション160を実行する。
諸SIクラウド・アプリケーション160はそれぞれ、一意的なユーザー・インターフェースを提供してもよく、独自のAPIを実装してもよい。ユーザー・インターフェースはたとえば、プログラム・ユーザー・インターフェースまたはウェブ・ベースのユーザー・インターフェースとして実装されてもよい。ある実施形態によれば、SIクラウド150は、SIクラウド150を管理するためのユーザー・インターフェースを提供する。ユーザー・インターフェースは、たとえばクライアント装置からの要求に応答してクライアント装置に一つまたは複数のウェブ・ページを提供することによって、ウェブ・ベースのユーザー・インターフェースとして実装されてもよい。図3Cは、ユーザーがSIクラウド・コンポーネント170のアイコンを作業面(work surface)にドラッグアンドドロップして、SIクラウド150アプリケーションによって実装される作業フローを生成できるようにする作業フロー・デザイン・ツールによって提供されるユーザー・インターフェースを描いている。図3Cに描かれる例では、作業フローは二つの並列なタスクを実行する。ユーザーからデータ、たとえばスキャンされた画像を受領した後、該データはOCRを使って処理されてテキストを生成し、上のタスクではテキストが翻訳される。下のタスクでは、ベイツ・スタンプおよびタイムスタンプがテキストに加えられる。翻訳されたテキストならびにベイツ・スタンプおよびタイムスタンプをもつテキストは、宛先にメールされる。
図3Dは、SIクラウド・コンポーネント170およびSIクラウド・アプリケーション160のための開発プロセスを描くブロック図である。左上隅から始めて、開発者はI/Oコンポーネント・ソフトウェア開発キット(SDK)を使ってSIクラウド・コンポーネント170を作成する。この例では、SIクラウド・コンポーネント170は、jarファイルによって作成されるが、これは必須ではない。それぞれの新たなSIクラウド・コンポーネント170は一つまたは複数の定義された入力、プロセス(機能)および出力をもつ。作業フローは、図3Cに関して本稿で先述した作業フロー・デザイン・ツールを使って生成され、その後、ウェブ・アプリケーションのようなアプリケーションによって実装される。最後に、アプリケーションはリリースされ、本稿で述べるように、エンドユーザー装置を介してユーザーに利用可能にされる。
iii.SIクラウド・データ
SIクラウド・データ184は、SIクラウド150を構成設定および管理するために使われるデータを含む。図1Aに描かれる例では、SIクラウド・データ184は、管理および構成設定データ186ならびにユーザー、認可およびトークン・データ188を含む。管理および構成設定データ186は、SIクラウド・アプリケーション130およびSIクラウド・コンポーネント170のための構成設定データ、たとえばSIクラウド・アプリケーション160およびSIクラウド・コンポーネント170の名前、バージョン、アプリケーション・プログラム・インターフェース定義および状態を含む。ユーザー、認可およびトークン・データ144は、任意の型のユーザー・データ、認可データおよびトークン・データを含みうる。このデータはたとえば、のちにより詳細に述べるように、SIクラウド・アプリケーション160、SIクラウド・コンポーネント170およびサードパーティー・サービス190にアクセスするために使われる。ユーザー、認可およびトークン・データ144に関して本稿で先述した図1Bおよび図1Cに描かれているユーザー、認可およびトークン・データの例は、ユーザー、認可およびトークン・データ188がユーザー、認可およびトークン・データ144とは別個で相異なるためSIクラウド150によって管理されるということ以外は、ユーザー、認可およびトークン・データ188に適用可能である。
III.SIクラウドおよびICEクラウド環境の統合
エンドユーザー装置とSIクラウド150の間の仲介役のはたらきをするICEクラウド・アプリケーション130を使って、MFPのようなエンドユーザー装置上でSIクラウド150の機能にアクセスするためのいくつかの手法が提供される。それらの手法は、SIクラウド150によって提供される機能を、ICEクラウド・アプリケーション130によって実装される共通のユーザー・インターフェースと統合する。これは、エンドユーザー装置上でSIクラウド150の諸APIを実装する必要なしに、共通のユーザー・インターフェースを介して、エンドユーザー装置上でSIクラウド150によって提供される機能へのアクセスをもつという恩恵を提供する。のちにより詳細に述べるように、これらの手法は、サードパーティー・サービスにアクセスするために必要とされるユーザー情報、認可クレデンシャルおよびトークンを管理する異なる仕方を含む。
A.統合の第1型:SIクラウドによって管理されるエンドツーエンド処理
SIクラウドおよびICEクラウドを統合するためのある実施形態によれば、ICEクラウド・アプリケーションがMFPのようなエンドユーザー装置とSIクラウド・アプリケーションとの間の仲介役としてはたらく。ICEクラウド・アプリケーションは、ユーザーがユーザーを選択し、データを処理するためにSIクラウド・アプリケーションによって必要とされる設定を指定することを許容するユーザー・インターフェースを提供するとともに、SIクラウド・アプリケーションのAPIを実装する。ICEクラウド・アプリケーションはデータ、ユーザー識別データおよびユーザー指定の設定をSIクラウド・アプリケーションに提供する。SIクラウド・アプリケーションは、ユーザー指定された設定を使って前記データを処理し、それにより作業フローを実装するために一つまたは複数のSIコンポーネントを使ってもよい。この状況において、SIクラウド・アプリケーションはSIクラウド・コンポーネントのAPIを実装し、ICEクラウド・アプリケーションおよびエンドユーザー装置のためにSIクラウド・コンポーネントとのあらゆる対話を扱う。SIクラウド・アプリケーションは、SIクラウド・コンポーネントから処理結果を受信し、該処理結果の、たとえば自分自身もしくはサードパーティー・サービスによるその後の処理があればそれを管理する。これは、エンドユーザー装置およびICEクラウド・アプリケーションの最小限の関与でエンドツーエンドの手法を提供する。
i.動作例
図4Aは、二つの異なるクラウド環境を統合するための手法を描いたブロック図400である。図1Aの要素のいくつかは、単に説明の目的のため、図4Aには描かれていない。図4Aでは、本手法は、法廷での電子提出のための文書を準備するコンテキストで描かれている。このコンテキストでは、法廷電子提出準備アプリケーション136は、エンドユーザー装置110のユーザーへのユーザー・インターフェースおよびSIクラウド150における法廷電子提出準備アプリケーション164へのアクセスを提供する。法廷は、たとえばフォーマット要件、サイズ要件などを含む、電子提出のための個別的要件をもつことがある。法廷に電子提出されるべき文書であって指定されたサイズを超えるものは、別個の文書に分割される必要がある。
図4Bは、ユーザーが作業フローを作成できるようにする作業フロー・ツールのユーザー・インターフェース画面420である。ユーザー・インターフェース画面420は、SIクラウド・コンポーネント170を使って法廷電子提出準備アプリケーション164によって実装される作業フローにおいて実行される諸現在段階を描いている。この例では、作業フローは、PDF変換を使って画像データをテキスト・データに変換し、該テキスト・データをそれぞれサイズ要件を満たすテキスト部分に分割し、該テキスト部分を一つまたは複数の宛先に電子メールで送信することを含む。ユーザー・インターフェース・コントロールが、ユーザーが、作業フローにおける各機能に対応するユーザー・インターフェース・オブジェクトを選択、ドラッグおよびドロップすることによって、作業フローにおいて段階を追加、削除および並べ替えすることを許容する。ユーザーは、作業フローにおける各機能によって使用されるデフォルト・パラメータを指定してもよい。
図5は、法廷への電子提出のための文書を準備するコンテキストにおいて、二つの異なるクラウド環境を統合するための手法を描く流れ図 500である。段階502では、エンドユーザー装置110のユーザーは、ICEクライアント・アプリケーション112またはウェブ・ブラウザー114を介してICEクラウド120における電子提出準備アプリケーション136にアクセスする。たとえば、ユーザーは、ICEクライアント・アプリケーション112の実行を開始してもよく、あるいはウェブ・ブラウザー114に、法廷電子提出準備アプリケーション136に関連付けられたURLにアクセスするよう命令してもよい。これは、ユーザーはたとえばドロップダウンメニューからユーザーを選択することによって自らを同定すること、たとえばエンドユーザー装置110に付随するスキャナーを介して身分証カードをスキャンして認証を完了すること、ユーザーIDおよびパスワードのようなユーザー・クレデンシャルを入力することなどを含んでいてもよい。ユーザー・クレデンシャルの検証は、エンドユーザー装置110上でローカルになされてもよく、あるいはユーザー検証サービス、ICEクラウド・マネージャ122、ICEクラウド・アプリケーション130などといったリモート・サービスに関わってもよい。
段階504では、法廷電子提出準備アプリケーション136は、たとえば一つまたは複数のウェブ・ページを介してユーザー・インターフェースを提供する。ユーザーが法廷電子提出アプリケーション136にアクセスするためにICEクライアント・アプリケーション112を使う代替では、ICEクライアント・アプリケーション112がユーザー・インターフェースを提供してもよい。図4Cは、ICEクライアント・アプリケーション112またはウェブ・ブラウザー114によって提供される例示的なユーザー・インターフェース画面420を描いている。ユーザー・インターフェース画面420は、ユーザーが、たとえば一つまたは複数の宛先電子メール・アドレスを指定することによる最終文書のための宛先、それぞれの最終文書の最大サイズを制限するために使われる分割サイズ、用紙サイズ、OCR、カラーおよび両面オプションを有効にするか否かおよびファイル名を指定できるようにする。これらは本稿ではまとめて「ユーザー設定」と称される。ユーザー設定は、エンドユーザー装置110上に記憶されてもよく、次にそのユーザーがエンドユーザー装置110にアクセスするときにそのユーザーのためのデフォルト値として使われてもよい。
段階506では、ユーザーは、法廷電子提出準備アプリケーション136に提供され、最終的に法廷電子提出準備アプリケーション164によってデータを処理するために使われる設定を指定する。該設定は、最終的な処理結果が送られるべき一つまたは複数の電子メール・アドレスを含んでいてもよい。
段階508では、ユーザーが、たとえば図4Cにおいて<Scan>〔スキャン〕ボタンを選択することによって、スキャンを開始し、文書がスキャンされ、スキャン・データが生成される。実施形態は本稿ではユーザーが、エンドユーザー装置において物理的な文書をスキャンすることによってスキャン・データの形でソース・データを生成するというコンテキストで記述されるが、それは説明の目的のためであって、実施形態はこの例に限定されず、いかなる型のソース・データにも適用可能である。たとえば、ユーザーは、既存のソース・データ、たとえばエンドユーザー装置110に記憶されている以前にスキャンされたデータ、クラウド・データ・ストレージ・サービスのようなクラウド・サービスに記憶されているデータなどを選択してもよい。
段階510では、ユーザー識別データ、スキャン・データおよび設定データが法廷電子提出準備アプリケーション136に提供される。たとえば、ICEクライアント・アプリケーション112は、ユーザーID、スキャン・データもしくは該スキャン・データが記憶されている場所へのリンクおよびユーザーによって選択された設定を示す設定データを含むメッセージを、法廷電子提出準備アプリケーション136に送信してもよい。あるいはまた、ウェブ・ブラウザー114がユーザーID、スキャン・データおよび設定データを法廷電子提出準備アプリケーション136に提供してもよい。
段階512では、法廷電子提出準備アプリケーション136が、SIクラウド150における法廷電子提出準備アプリケーション164を呼び出す。ある実施形態によれば、法廷電子提出準備アプリケーション136は、法廷電子提出準備アプリケーション164のAPIをサポートし、法廷電子提出準備アプリケーション164のAPIに準拠する一つまたは複数のメッセージを生成して法廷電子提出準備アプリケーション164に送信することによって、法廷電子提出準備アプリケーション164を呼び出す。メッセージは、ユーザー識別データおよび設定データを含んでいてもよい。メッセージは、たとえば一つまたは複数の代表状態(REST: Representational State)コールによって実装されてもよい。
段階514では、法廷電子提出準備アプリケーション164は、ユーザーによって指定された設定を使ってスキャン・データを処理して、結果を生成する。今の例では、これは、光学式文字認識を使ってスキャン・データをテキストに変換し、テキストをサイズ要件を満たすテキスト部分に分割することを含む。サイズ要件は、たとえば、電子提出のために法廷によって許容される最大サイズ制限またはページ制限であってもよい。この例では、テキスト部分は、法廷電子提出準備アプリケーション164によって実行される処理の結果を表わす。今の例では、法廷電子提出準備アプリケーション164は、それらのテキスト部分を設定データによって指定される一つまたは複数の電子メール宛先に送信することによって、最終的な処理を実行する。具体的な実装に依存して、他の型の最終的な処理が実行されてもよく、実施形態は最終結果を一つまたは複数の宛先にメールする例に限定されない。
図6Aは、二つの異なるクラウド環境を統合するための手法のもう一つの例を描くブロック図 600である。図4Aと同様に、図1Aの要素のいくつかは、単に説明の目的のため、図6Aには描かれていない。図6Aでは、本手法は、文書にベイツ・スタンプを加えるコンテキストで描かれている。このコンテキストでは、ベイツ・スタンプ付けアプリケーション134は、エンドユーザー装置110のユーザーへのユーザー・インターフェースおよびSIクラウド150におけるベイツ・スタンプ付けアプリケーション162へのアクセスを提供する。
図6Bは、ユーザーが作業フローを作成できるようにする作業フロー・ツールのユーザー・インターフェース画面620である。ユーザー・インターフェース画面は、SIクラウド・コンポーネント170を使ってベイツ・スタンプ付けアプリケーション162によって実装される作業フローにおいて実行される諸現在段階を描いている。この例では、作業フローは、PDF変換を使って画像データをテキスト・データに変換し、該テキストにベイツ・スタンプを加え、該テキスト・データをそれぞれサイズ要件を満たすテキスト部分に分割し、該テキスト部分を一つまたは複数の宛先に電子メールで送信することを含む。図4Bの先の例と同様に、ユーザー・インターフェース・コントロールが、ユーザーが、作業フローにおける各機能に対応するユーザー・インターフェース・オブジェクトを選択、ドラッグおよびドロップすることによって、作業フローにおいて段階を追加、削除および並べ替えすることを許容する。ユーザーは、作業フローにおける各機能によって使用されるデフォルト・パラメータを指定してもよい。
図7は、文書にベイツ・スタンプを加えるコンテキストにおいて、二つの異なるクラウド環境を統合するための手法を描く流れ図 700である。段階702では、エンドユーザー装置110のユーザーは、ICEクライアント・アプリケーション112またはウェブ・ブラウザー114を介してICEクラウド120におけるベイツ・スタンプ付けアプリケーション134にアクセスする。たとえば、ユーザーは、ICEクライアント・アプリケーション112の実行を開始してもよく、あるいはウェブ・ブラウザー114に、ベイツ・スタンプ付けアプリケーション134に関連付けられたURLにアクセスするよう命令してもよい。これは、ユーザーがたとえばドロップダウンメニューからユーザーを選択することによって自らを同定し、認証を完了することを含んでいてもよい。図5の段階502に関して先述したのと同様である。
段階704では、ベイツ・スタンプ付けアプリケーション134は、たとえば一つまたは複数のウェブ・ページを介してユーザー・インターフェースを提供する。ユーザーがベイツ・スタンプ付けアプリケーション134にアクセスするためにICEクライアント・アプリケーション112を使う代替では、ICEクライアント・アプリケーション112がユーザー・インターフェースを提供してもよい。図6Cおよび図6Dは、それぞれICEクライアント・アプリケーション112またはウェブ・ブラウザー114によって提供される例示的なユーザー・インターフェース画面620、640を描いている。ユーザー・インターフェース画面620は、ユーザーが、たとえば一つまたは複数の宛先電子メール・アドレスを指定することによる最終文書のための宛先、それぞれの最終文書の最大サイズを制限するために使われる分割サイズ、用紙サイズ、OCR、カラーおよび両面オプションを有効にするか否かおよびファイル名を指定できるようにする。ユーザー・インターフェース画面620を介して提供されるユーザー設定は、法廷電子提出準備アプリケーション136によって提供される図4Cのユーザー・インターフェース画面420によって提供されるユーザー設定と同じである。諸ICEクラウド・アプリケーション130を通じて共通のユーザー・インターフェースをもつことで、より好ましいユーザー経験が提供される。ユーザー・インターフェース画面640は、ユーザーが、プレフィックスおよびサフィックス、カウンター開始およびカウンター終了、ベイツ・スタンプの位置を指定する整列設定およびベイツ・スタンプのフォントを指定するフォント設定を含む、ベイツ・スタンプ付けに固有の設定を指定することを許容する。
段階706では、ユーザーは、ベイツ・スタンプ付けアプリケーション134に提供され、最終的にベイツ・スタンプ付けアプリケーション162によってデータを処理するために使われる設定を指定する。該設定は、最終的な処理結果が送られるべき一つまたは複数の電子メール・アドレスを含んでいてもよい。
段階708では、ユーザーが、たとえば図6Cにおいて<Scan>〔スキャン〕ボタンを選択することによって、プロセスを開始し、文書がスキャンされ、スキャン・データが生成される。本稿で先に述べたように、実施形態は、既存のソース・データ、たとえばエンドユーザー装置110に記憶されている以前にスキャンされたデータ、クラウド・データ・ストレージ・サービスのようなクラウド・サービスに記憶されているデータなどに適用可能である。
段階710では、ユーザー識別データ、スキャン・データおよび設定がベイツ・スタンプ付けアプリケーション134に提供される。たとえば、ICEクライアント・アプリケーション112は、ユーザーID、スキャン・データもしくは該スキャン・データが記憶されている場所へのリンクおよびユーザーによって選択された設定を示す設定データを含むメッセージを、ベイツ・スタンプ付けアプリケーション134に送信してもよい。あるいはまた、ウェブ・ブラウザー114がユーザーID、スキャン・データおよび設定データをベイツ・スタンプ付けアプリケーション134に提供してもよい。
段階712では、ベイツ・スタンプ付けアプリケーション134は、SIクラウド150におけるベイツ・スタンプ付けアプリケーション162を呼び出す。ある実施形態によれば、ベイツ・スタンプ付けアプリケーション134は、ベイツ・スタンプ付けアプリケーション162のAPIをサポートし、ベイツ・スタンプ付けアプリケーション162のAPIに準拠する一つまたは複数のメッセージを生成してベイツ・スタンプ付けアプリケーション162に送信する。メッセージは、ユーザー識別データおよび設定データを含んでいてもよい。メッセージは、たとえば一つまたは複数の代表状態(REST: Representational State)コールによって実装されてもよい。
段階714では、ベイツ・スタンプ付けアプリケーション162は、ユーザーによって指定された設定を使ってスキャン・データを処理する。今の例では、これは、光学式文字認識を使ってスキャン・データをテキストに変換し、テキストにベイツ・スタンプを加え、テキストを指定されたページ制限を超えないテキスト部分に分割することを含む。今の例では、ベイツ・スタンプ付けアプリケーション162は、それらのテキスト部分を設定データによって指定される一つまたは複数の電子メール宛先に送信することによって、最終的な処理を実行する。ベイツ・スタンプは、それらのテキスト部分を同じテキスト文書に属するものとして同定するために、各テキスト部分に加えられてもよい。具体的な実装に依存して、他の型の最終的な処理が実行されてもよく、実施形態は最終結果を一つまたは複数の宛先にメールする例に限定されない。
今述べた法廷電子提出準備およびベイツ・スタンプ付けの例では、それぞれのICEクラウド・アプリケーションはエンドユーザー・クライアント装置、すなわちエンドユーザー装置110のためのグラフィカル・ユーザー・インターフェースを提供する。ICEクラウド・アプリケーションは、対応するSIクラウド・アプリケーションのAPIを実装し、該SIクラウド・アプリケーションを呼び出す。SIクラウド・アプリケーションは、SIクラウド・コンポーネントのAPIを実装し、それらのSIクラウド・コンポーネントを呼び出して、SIクラウド・アプリケーションの作業フローを実装する。SIクラウド・アプリケーションは、作業フローにおける最後のSIクラウド・コンポーネントから処理結果を受信し、次いで、処理結果を一つまたは複数の電子メール宛先にメールするといった、最終処理があればそれを実行する。
ii.サードパーティー・サービスのためのトークンを識別するためのマッピング・データの使用
今述べた二つの例では、最終処理は結果を一つまたは複数の宛先にメールすることを含んでいる。宛先の電子メール・アドレスは、ICEクラウド・アプリケーション130がSIクラウド・アプリケーション160を呼び出すときに、たとえば一つまたは複数のRESTコールを介して、ICEクラウド・アプリケーション130によってSIクラウド・アプリケーション160に提供されてもよい。たとえば、法廷電子提出準備アプリケーション136およびベイツ・スタンプ付けアプリケーション134によって生成され、それぞれ法廷電子提出準備アプリケーション164およびベイツ・スタンプ付けアプリケーション162に送信される処理要求に含まれる設定データが、最終処理結果のための電子メール・アドレスを含んでいてもよい。
SIクラウド・アプリケーションによって実行される処理が、トークンの使用を要求するサードパーティー・サービス190の使用を含む状況がありうる。たとえば、法廷電子提出準備アプリケーション164およびベイツ・スタンプ付けアプリケーション162によって生成された最終処理結果が、たとえばユーザーを認証するためにトークンの使用を要求するサードパーティー・サービス190に提供されることがある。トークンが特定のドメインに固有である状況については、ICEクラウド120のユーザーに発行されたトークンは、SIクラウド150がサードパーティー・サービス190にアクセスするためには使用可能でないことがあり、逆に、SIクラウド150のユーザーに発行されたトークンは、ICEクラウド120がサードパーティー・サービス190にアクセスするためには使用可能でないことがある。このように、たとえICEクラウド・アプリケーション130が、特定のSIクラウド・アプリケーション160を呼び出すために生成されてたとえば一つまたは複数のRESTコールを介して送信されたメッセージにトークンを含めていたとしても、受信するSIクラウド・アプリケーションは、そのトークンを使うことができないことがありうるのである。
ある実施形態によれば、この問題は、ICEクラウド120におけるユーザーIDとSIクラウド150におけるユーザーIDの間の対応を指定するマッピング・データを使って対処される。のちにより詳細に述べるように、構成100において新たなユーザーのプロビジョニングは、ICEクラウド120およびSIクラウド150の両方のためのユーザーIDを生成し、また、それらのユーザーIDの間の対応をマッピング・データにおいて確立することを含んでいてもよい。
図1Dは、ICEクラウド・ユーザー・IDとSIクラウド・ユーザーIDの間の対応を指定する、テーブルの形のマッピング・データ192を描いている。たとえば、のちにより詳細に述べるプロビジョニング・プロセス後、ICEクラウド・ユーザーID「User1」がICEクラウド120において生成され、対応するSIクラウド・ユーザーID「X1」がSIクラウド150において生成される。これらのユーザーIDのそれぞれは、その対応する環境、すなわちICEクラウド120およびSIクラウド150において使われる。マッピング・データ192は、具体的な実装に依存して、追加的な情報を格納していてもよく、マッピング・データ192は図1Dに描かれる例に限定されない。マッピング・データ192は、プロビジョニング・プロセスの間に生成され、更新されてもよく、ICEクラウド120、SIクラウド150、別の位置、たとえばサーバーまたはそれらの任意の組み合わせにおいて維持されうる。一つの限定しない例として、マッピング・データ192は、ユーザー、認可およびトークン・データ144または188の一部として維持されてもよい。
マッピング・データ192は、SIクラウド・アプリケーションが、ICEクラウド120におけるユーザーIDに対応するSIクラウド150におけるユーザーIDを決定することを許容する。それにより、SIクラウド150ドメインにおいて有効である適切なトークンが、サードパーティー・サービス190のために選択されることができる。
たとえば、対応するユーザーID「User1」をもつエンドユーザー装置110のユーザーが、図6A〜6Dおよび図7に関して本稿で先に述べたベイツ・スタンプ付けアプリケーション134を使って文書が処理されるが、先述したように最終処理結果がメールされるのではなく、最終処理結果がサードパーティー・サービス190に含まれるクラウド記憶サービスに送られることを要求するとする。ユーザーID「User1」は、ベイツ・スタンプ付けアプリケーション134がベイツ・スタンプ付けアプリケーション162を呼び出すときに、ベイツ・スタンプ付けアプリケーション134によって提供されてもよい。これはたとえば、ユーザー設定データに含まれるまたはRESTコールにおいて他の仕方で指定されることによる。さらに、クラウド・ストレージ・サービスがトークンの使用を要求し、この例でベイツ・スタンプ付けアプリケーション134であるSIクラウド・アプリケーションがICEクラウド120のトークンを使うことができないとする。通常の処理および最終処理結果の生成が完了すると、ベイツ・スタンプ付けアプリケーション162はマッピング・データ192を使って、SIクラウド150ユーザーID「X1」がICEクラウド120ユーザーID「User1」に対応することを判別する。次いで、ベイツ・スタンプ付けアプリケーション162はユーザー、認可およびトークン・データ188にアクセスして、クラウド・ストレージ・サービスのためのSIクラウド150ユーザーID「X1」のためのトークンを取り出す。次いで、ベイツ・スタンプ付けアプリケーション162は、クラウド・ストレージ・サービスのためのトークンを含む処理要求を生成して、クラウド・ストレージ・サービスに送信する。この手法は、ICEクラウド120ユーザーIDを知っているSIクラウド・アプリケーション160がSIクラウド150および特定のサードパーティー・サービスにおける対応するユーザーIDを判別し、次いでSIクラウド150における対応するユーザーIDについて有効なトークンを選択することを許容する。
この統合手法では、エンドユーザー装置、すなわちエンドユーザー装置110は、どのSIクラウド・アプリケーションまたはSIクラウド・コンポーネントのAPIも実装する必要がない。さらに、本稿で論じられるウェブ・ブラウザー・ベースの実装では、エンドユーザー装置はICEクラウド・アプリケーションのAPIを実装する必要がない。さらに、エンドユーザー装置およびICEクラウド・アプリケーションは、サードパーティー・サービス190によって要求されるいかなるアクセスおよび認証情報も管理する必要がない。それはSIクラウド・アプリケーションによって管理されるからである。さらに、SIクラウド・アプリケーションは、SIクラウド・コンポーネント170によって要求されるあらゆるユーザー情報およびサードパーティー・サービス190によって要求されるトークンを管理する。
B.統合の第2型:ICEクラウドによって管理される統合
先の統合実施形態と同様に、ICEクラウド・アプリケーションはMFPのようなエンドユーザー装置と複数のSIクラウド・アプリケーションとの間の仲介役としてはたらく。しかしながら、いったんICEクラウド・アプリケーションがSIクラウド・アプリケーションを呼び出したらあらゆるその後の処理はSIクラウド・アプリケーションによって扱われる上記の第一の統合手法とは異なり、この統合手法によれば、ICEクラウド・アプリケーションは複数のSIクラウド・アプリケーションおよびもしあればサードパーティー・サービスによる処理を管理する。
ICEクラウド・アプリケーションは、ユーザーが、データを処理するためにSIクラウド・アプリケーションによって必要とされる設定を指定することを許容するユーザー・インターフェースを提供するとともに、SIクラウド・アプリケーションのAPIを実装する。ICEクラウド・アプリケーションはデータおよびユーザー指定の設定をSIクラウド・アプリケーションに提供する。SIクラウド・アプリケーションは、ユーザー指定された設定を使って前記データを処理し、SIクラウド・アプリケーションがSIクラウド・コンポーネントを使う限りにおいて、SIクラウド・アプリケーションはSIクラウド・コンポーネントのAPIを実装し、ICEクラウド・アプリケーションおよびエンドユーザー装置のためにSIクラウド・コンポーネントとのあらゆる対話を扱う。ICEクラウド・アプリケーションは複数のSIクラウド・アプリケーションを使い、それぞれのSIクラウド・アプリケーションと個別に対話してもよい。これは、一つのSIクラウド・アプリケーションからの出力として処理結果を受領し、該処理結果を別のSIクラウド・アプリケーションへの入力として提供することを含む。ICEクラウド・アプリケーションは、サードパーティー・サービスによって要求されるアクセスおよび認証情報をも管理する。これはたとえば、サードパーティー・サービス190によって要求されるトークンを含んでいてもよい。サードパーティー・サービスによって要求されるアクセスおよび認証情報をICEクラウド120において維持することは、サードパーティー・サービスをサポートするためにSIクラウド150を修正する必要を回避する。
図8Aは、ある実施形態に基づく、二つの異なるクラウド環境を統合するための構成800を描くブロック図である。図1Aの要素のいくつかは、単に説明の目的のため、図8Aには描かれていない。
図8Aの構成800では、ICEクラウド・アプリケーションはデータ・ストレージ・アプリケーション138である。該データ・ストレージ・アプリケーション138は任意的に、光学式文字認識を使って画像データをテキストに変換し、データに三つの異なる型のスタンプ/マークを加え、次いでスタンプ付け/マーク付けされたデータをサードパーティーのクラウド・ストレージ・サービスにおいて記憶する。この例では、三つの異なる型のスタンプ/マークは、ベイツ・スタンプ、タイムスタンプおよび透かし〔ウォーターマーク〕を含み、ベイツ・スタンプ・アプリケーション、タイムスタンプ・アプリケーションおよび透かしアプリケーションを含む三つの別個のSIクラウド・アプリケーション160によって実装され、三つの異なる作業フローを表わす。ベイツ・スタンプがデータに加えられ、タイムスタンプ、最後に透かしがこれに続く。こうして、ベイツ・スタンプ・アプリケーション、タイムスタンプ・アプリケーションおよび透かしアプリケーションはそれぞれ、データ・ストレージ・アプリケーション138の作業フローの一部を実装する。データ・ストレージ・アプリケーション138は、ベイツ・スタンプ・アプリケーション、タイムスタンプ・アプリケーションおよび透かしアプリケーションのAPIを実装し、データを処理するためにそれらの各アプリケーションを別個に呼び出す。透かしアプリケーションから処理結果を受信した後、データ・ストレージ・アプリケーション138は結果をサードパーティー・サービス190に提供する。
データ・ストレージ・アプリケーション138は、エンドユーザー装置110のユーザーにユーザー・インターフェースを提供し、SIクラウド150およびサードパーティー・サービス190とのあらゆる対話を扱う。データ・ストレージ・アプリケーション138は任意的に、画像データをテキスト・データに変換する内部のOCRコンポーネントを使ってエンドユーザー装置110から受領された画像データを処理する。しかしながら、実施形態はこの例に限定されず、データ・ストレージ・アプリケーション138は他のところで、たとえばSIクラウド・アプリケーション160におけるOCRアプリケーションを介してOCR機能を呼び出してもよい。データ・ストレージ・アプリケーション138は、透かしアプリケーションから受領された結果を一つまたは複数のサードパーティー・サービス190に提供する。今の例では、サードパーティー・サービス190はBox、Dropbox、Google Drive、Apple iCloud Drive、Microsoft OneDriveなどといったクラウド・ストレージ・サービスを含み、スタンプを含む結果として得られるデータはクラウド・ストレージ・サービスに記憶される。
図8B〜8Dは、それぞれベイツ・スタンプ・アプリケーション、タイムスタンプ・アプリケーションおよび透かしアプリケーションによって実行される、ベイツ・スタンプ付け、タイムスタンプ付けおよび透かし入れを含む三つの異なるスタンプ付け/マーク付け作業フローを描いているブロック図である。
図9は、データにマークを加え、次いでマーク付けされたデータをクラウド・ストレージに記憶するコンテキストにおいて、二つの異なるクラウド環境を統合するための手法を描く流れ図 900である。段階902では、エンドユーザー装置110のユーザーは、本稿で先に述べたように、ICEクライアント・アプリケーション112またはウェブ・ブラウザー114を介してICEクラウド120におけるデータ・ストレージ・アプリケーション138にアクセスする。先の例のように、これは、ユーザーがたとえばドロップダウンメニューからユーザーを選択することによって自らを同定すること、たとえばエンドユーザー装置110に付随するスキャナーを介して身分証カードをスキャンして認証を完了すること、ユーザーIDおよびパスワードのようなユーザー・クレデンシャルを入力することなどを含んでいてもよい。ユーザー・クレデンシャルの検証は、エンドユーザー装置110上でローカルになされてもよく、あるいはユーザー検証サービス、ICEクラウド・マネージャ122、ICEクラウド・アプリケーション130などといったリモート・サービスに関わってもよい。
段階904では、データ・ストレージ・アプリケーション138は、本稿で先に述べたユーザー・インターフェースを提供する。図8E〜8Iは、データ・ストレージ・アプリケーション138によって提供されるサービスに関するユーザー設定を指定するためのICEクライアント・アプリケーション112またはウェブ・ブラウザー114によって提供される例示的なユーザー・インターフェース画面を描いている。図8Eは、ユーザーが、最終文書のための宛先、スタンプ型、出力フォーマット、用紙サイズ、OCR、カラーおよび両面オプションを有効にするか否かおよびファイル名を指定できるようにするユーザー・インターフェース画面を描いている。図8Fは、ユーザーが、データに加えられるスタンプの型を指定できるようにするユーザー・インターフェース画面を描いている。利用可能な選択はタイムスタンプ、ベイツ・スタンプおよび透かしであるが、実施形態はこれらの例に限定されず、他の型のスタンプ/マークが使われてもよい。さらに、複数のスタンプおよびマークが選択されてもよい。図8Gは、ユーザーが、標準時ゾーン、垂直方向位置および水平方向位置およびフォント設定を含む高度なタイムスタンプ設定を指定できるようにするユーザー・インターフェース画面を描く。図8Hは、ユーザーが、高度なベイツ・スタンプ設定を指定できるようにするユーザー・インターフェース画面を描く。図8Iは、ユーザーが、高度な透かし設定を指定できるようにするユーザー・インターフェース画面を描く。
段階906では、ユーザーは、データ・ストレージ・アプリケーション138に提供され、最終的にデータ・ストレージ・アプリケーション138およびSIクラウド・アプリケーション160によってデータを処理するために使われる設定を指定する。
段階908では、ユーザーが、たとえば図8Eにおいて<Scan>〔スキャン〕ボタンを選択することによって、データ・ストレージ・アプリケーション138による処理を開始する。<Scan>ボタンのユーザー選択に応答して、文書がスキャンされ、スキャン・データが生成される。
段階910では、スキャン・データおよび設定がデータ・ストレージ・アプリケーション138に提供される。たとえば、ICEクライアント・アプリケーション112は、スキャン・データもしくは該スキャン・データが記憶されている場所へのリンクおよびユーザーによって選択された設定を示す設定データを含むメッセージを、データ・ストレージ・アプリケーション138に送信してもよい。あるいはまた、ウェブ・ブラウザー114が、スキャン・データおよび設定データをデータ・ストレージ・アプリケーション138に提供してもよい。
段階912では、データ・ストレージ・アプリケーション138は、ユーザーによって指定された設定に基づいて、SIクラウド150におけるスタンプ付けまたはマーク付けアプリケーションを呼び出す。これはたとえば、図8Aに描かれたベイツ・スタンプ・アプリケーション、タイムスタンプ・アプリケーションおよび/または透かしアプリケーションを含んでいてもよい。データ・ストレージ・アプリケーション138は、要求を生成し、これらのアプリケーションのうちの一つに送信する。要求は、該要求において指定されているデータに対応するスタンプまたは透かし〔ウォーターマーク〕を加える要求である。要求は、前記データまたは前記データへのリンクを含んでいてもよい。要求は、たとえば一つまたは複数のRESTコールによって実装されてもよい。
段階914では、SIクラウド・アプリケーション、たとえばベイツ・スタンプ・アプリケーション、タイムスタンプ・アプリケーションおよび/または透かしアプリケーションは、データにスタンプまたはマークを加えて、スタンプ付け/マーク付けされたデータをデータ・ストレージ・アプリケーション138に返す。
段階912および914は、任意の数のスタンプ付け/マーク付けアプリケーションについて何度か繰り返されてもよい。今の例では、データ・ストレージ・アプリケーション138はまずベイツ・スタンプ・アプリケーションを使ってデータにベイツ・スタンプを加える。これは、データ・ストレージ・アプリケーション138がデータにベイツ・スタンプを加える要求を生成して、ベイツ・スタンプ・アプリケーションに送信することを含んでいてもよい。要求は、ベイツ・スタンプ・アプリケーションのAPIに準拠し、ベイツ・スタンプのためのユーザー設定、たとえば図8Hに描かれるユーザー設定を指定する設定データを含む。ベイツ・スタンプ・アプリケーションは要求を処理し、データにベイツ・スタンプを加える。ベイツ・スタンプ・アプリケーションは、次いで、処理されたデータをデータ・ストレージ・アプリケーション138に返す。
データ・ストレージ・アプリケーション138はベイツ・スタンプ・アプリケーションから結果を受信し、データにタイムスタンプを加える要求を生成して、タイムスタンプ・アプリケーションに送信する。要求は、タイムスタンプ・アプリケーションのAPIに準拠し、タイムスタンプのためのユーザー設定、たとえば図8Gに描かれるユーザー設定を指定する設定データを含む。APIはアプリケーションによって異なっていてもよく、データ・ストレージ・アプリケーション138は、使用される各アプリケーションのAPIを満たす要求を準備することを扱う。かかる準備は、データを、使用されるべき次のアプリケーションによって要求される異なるフォーマットに整形することを含んでいてもよい。タイムスタンプ・アプリケーションは要求を処理し、データにタイムスタンプを加える。タイムスタンプ・アプリケーションは、次いで、データをデータ・ストレージ・アプリケーション138に返す。
タイムスタンプ・アプリケーションから処理されたデータを受信した後、データ・ストレージ・アプリケーション138はスタンプ付け/マーク付けされたデータを一つまたは複数のサードパーティー・サービス190に処理のために提供する。たとえば、データ・ストレージ・アプリケーション138はスタンプ付け/マーク付けされたデータをクラウド・ストレージ・サービスに提供してもよい。これは、記憶されたデータの完全性(integrity)を維持する要求を満たすために有用でありうる。これは、データ・ストレージ・アプリケーション138が、サードパーティー・サービス190のAPIに準拠する一つまたは複数の要求を生成し、送信することを含んでいてもよい。ある実施形態によれば、データ・ストレージ・アプリケーション138は、サードパーティー・サービス190によって要求されるアクセスおよび認証情報があればそれを管理する。これはたとえば、サードパーティー・サービス190を使うために要求される、アクセスおよびリフレッシュ・トークンのようなトークンを含んでいてもよい。たとえば、データ・ストレージ・アプリケーション138は、ユーザー、認可およびトークン・データ144から有効なトークンを取得し、クラウド記憶サービスにトークンを提供するためにユーザーIDを使う。
このように、この統合手法では、エンドユーザー装置、すなわちエンドユーザー装置110は、どのSIクラウド・アプリケーションまたはSIクラウド・コンポーネントのAPIも実装する必要がない。さらに、本稿で論じられるウェブ・ブラウザー・ベースの実装では、エンドユーザー装置は、データ・ストレージ・アプリケーション138のAPIを実装する必要がない。エンドユーザー装置は、サードパーティー・アプリケーション190によって要求されるアクセスおよび認証情報があったとしてもそれを管理する必要がない。これは、データ・ストレージ・アプリケーション138によって管理されるからである。
C.統合の第3型:コンフリクト検査のあるICEクラウドによって管理される統合
本稿で先に述べた第2型統合の手法では、ICEクラウド・アプリケーションは、作業フローの各段階において、それぞれのSIクラウド・アプリケーションと直接対話し、それぞれのSIクラウド・アプリケーションから処理結果を受信する。よって、ICEクラウド・アプリケーションは、作業フローにおける各段階が実行された後、作業フローにおけるその後の段階を実行する前に、作業フローにおける各段階の結果を評価することができる。これにより、あるSIクラウド・アプリケーションから受領された処理結果を、別のSIクラウド・アプリケーションへの入力として使われるよう準備するための必要な処理があれば、ICEクラウド・アプリケーションは自分でそれを実行できる。各SIクラウド・アプリケーションは一般に、一つまたは二つの段階のみをもつ単純な作業フローを実行するので、ICEクラウド・アプリケーションは、コンフリクトを避けるために、作業フローにおける各段階において、データを適正に管理することができる。
しかしながら、いくつかの状況では、ある種のSIクラウド・アプリケーションによって実装される作業フローまたは作業フローの諸部分は、多数の段階を含み、より複雑である。たとえば、のちにより詳細に述べるように、特定のSIクラウド・アプリケーションは二つ以上のスタンプまたはマークを、エンドユーザー装置から受領されたデータに加えてもよく、それらのスタンプまたはマークは、少なくとも部分的に重なり合って、該スタンプまたはマークによって提供される情報の一部または全部をはっきりしないようにする位置にされることがある。一つの例は、透かしがベイツ・スタンプに重ねて加えられて、ベイツ番号の一部を隠蔽するというものである。
SIクラウドおよびICEクラウドを統合するためのもう一つの実施形態によれば、作業フローを実装するために複数のSIクラウド・コンポーネントを使う、より複雑なSIクラウド・アプリケーションにおいて潜在的なコンフリクトを避けるために、コンフリクト検査が実行される。図10Aは、ある実施形態に基づく、コンフリクト検査を使う、二つの異なるクラウド環境を統合するための構成1000を描くブロック図である。図1Aの要素のいくつかは、単に説明の目的のため、図10Aには描かれていない。図10Aに描かれる手法は、データ・ストレージ・アプリケーション138が、エンドユーザー装置110から受信したデータを、ベイツ・スタンプ付け、タイムスタンプ付けおよび透かし入れによって処理させるという点で、図8Aに描かれた手法と同様である。しかしながら、スタンプ付けおよびマーク付けを実行するために三つの別個のSIクラウド・アプリケーション160を呼び出す代わりに、データ・ストレージ・アプリケーション138は、スタンプ付けおよびマーク付けを実行するために、単一のSIクラウド・アプリケーション160、つまりスタンプ付け/マーク付けアプリケーション166を呼び出す。図10Bは、スタンプ付け/マーク付けアプリケーション166によって実装されるスタンプ付け/マーク付け作業フローを描くブロック図である。スタンプ付け/マーク付け作業フローは、ベイツ・スタンプ付け、タイムスタンプ付けおよび透かし入れ〔ウォーターマーク付け〕を含む。図10Aに描かれるように、スタンプ付け/マーク付けは、それぞれスタンプ付け/マーク付けアプリケーション166によって呼び出される、三つのSIクラウド・コンポーネント170、つまりベイツ・スタンプ付け176コンポーネント、タイムスタンプ付け178コンポーネントおよび透かし180コンポーネントによって実行される。データ・ストレージ・アプリケーション138は、スタンプ付け/マーク付けアプリケーション166によって実行される処理の最終結果を受信し、サードパーティー・サービス190によるその後の処理を直接管理する。
ある実施形態によれば、潜在的なコンフリクトに対処するために、SIクラウド150によって実行された処理との潜在的なコンフリクトを回避するようコンフリクト検査が実行される。コンフリクト検査は、具体的な実装に依存して変わりうる種々の仕方で実装されうる。ある実施形態によれば、コンフリクト検査は、エンドユーザー装置110のユーザーによって指定されたユーザー設定に対して実行される。これはたとえば、エンドユーザー装置110のユーザーによって指定された設定を解析して、文書データに加えられようとしている何らかの型のデータが少なくとも部分的に重なり合うかどうかを判定することを含んでいてもよい。データは、いかなる型のデータを含んでいてもよく、実施形態は、コンフリクト検査について、いかなる型のデータにも限定されない。データの例は、限定なしに、テキスト・データ、スタンプ、たとえばタイムスタンプ、ベイツ・スタンプ、他のスタンプなど、マーク、たとえば透かし〔ウォーターマーク〕など、コード、たとえばバーコード、QRコード(登録商標)、署名などならびに画像データを含む。たとえば、データ・ストレージ・アプリケーション138は、加えられようとしている二つのデータ項目の位置が距離基準を満たすかどうかを判定してもよい。距離基準は、スタンプまたはマークの間に重なりがないことを保証するためのデータ項目間の最小距離を指定してもよい。二つのデータ項目の位置の間の差が距離基準未満であるとき、コンフリクトが存在する。距離基準は、データ項目の型および/またはサイズに依存して変わりうる。たとえば、スタンプまたはマークのようなある種の型のデータ項目は、少なくともある指定された距離離れていることが要求されてもよい。もう一つの例として、スタンプまたはマークのようなある種の型のデータ項目は、文書の別個のエリアに、たとえば文書の反対の側またはコーナーにあることが要求されてもよい。たとえば、ユーザーが文書にベイツ・スタンプおよび透かしの両方を加えることを選択する場合、ベイツ・スタンプおよび透かしは、文書の反対のコーナーに位置することが要求されてもよい。
コンフリクト検査は、ICEアプリケーション、たとえばデータ・ストレージ・アプリケーション138によって、エンドユーザー装置110から設定データが受信された後だがデータ・ストレージ・アプリケーション138がスタンプ付け/マーク付けアプリケーション166を呼び出す前に、実行されてもよい。コンフリクトを識別することに応答して、データ・ストレージ・アプリケーション138は種々のアクションを実行しうる。データ・ストレージ・アプリケーション138は、検出されたコンフリクトを、たとえばスタンプまたはマークの位置を変更することによって、自分で解決してもよい。たとえば、二つのマークが文書の右上コーナーのために指定されており重なり合うとする。データ・ストレージ・アプリケーション138はそれらのマークの一方の位置を文書の左下コーナーに変更して、二つのマークが重なり合わないようにしてもよい。データ・ストレージ・アプリケーション138は、エンドユーザー装置110で表示されるユーザー・インターフェース上に表示される一つまたは複数のメッセージを生成して送信してもよい。メッセージは、コンフリクトを同定して、たとえばスタンプまたはマークの位置を変更することによってコンフリクトを解消するようユーザーに尋ねてもよい。ユーザーが設定を変更した後、修正された設定データがデータ・ストレージ・アプリケーション138に送信され、コンフリクトがあるかどうか再試験される。このプロセスは、すべてのコンフリクトが解決されるまで繰り返されてもよい。
コンフリクト検査はデータ・ストレージ・アプリケーション138によって供給されるユーザー・インターフェースによってエンドユーザー110において実行されてもよい。たとえば、データ・ストレージ・アプリケーション138によってエンドユーザー装置110に提供されるユーザー・インターフェースは、コンフリクト検査を実行する論理を含んでいてもよい。ウェブ・ベースのユーザー・インターフェースのコンテキストでは、論理はたとえば、一つまたは複数のスクリプトによって実装されてもよい。
図11は、コンフリクト検査を使う、二つの異なるクラウド環境を統合するための手法を描く流れ図 1100である。流れ図 1100によって描かれる手法は、データにマークを加え、次いでマークされたデータをクラウド・ストレージに記憶することを背景としている。段階1102では、本稿で先に述べたように、エンドユーザー装置110のユーザーは、ICEクライアント・アプリケーション112またはウェブ・ブラウザー114を介してICEクラウド120におけるデータ・ストレージ・アプリケーション138にアクセスする。これは、ユーザーが、たとえばドロップダウンメニューからユーザーを選択することによって自らを同定すること、たとえばエンドユーザー装置110に付随するスキャナーを介して身分証カードをスキャンして認証を完了すること、ユーザーIDおよびパスワードのようなユーザー・クレデンシャルを入力することなどを含んでいてもよい。ユーザー・クレデンシャルの検証は、エンドユーザー装置110上でローカルになされてもよく、あるいはユーザー検証サービス、ICEクラウド・マネージャ122、ICEクラウド・アプリケーション130などといったリモート・サービスに関わってもよい。
段階1104では、データ・ストレージ・アプリケーション138は、本稿で先に述べたようにユーザー・インターフェースを提供する。図8E〜図8Iは、データ・ストレージ・アプリケーション138によって提供されるサービスに関するユーザー設定を指定するための、ICEクライアント・アプリケーション112またはウェブ・ブラウザー114によって提供される例示的ユーザー・インターフェース画面を描いている。図8Eのユーザー・インターフェース画面は、ユーザーが、最終文書のための宛先、スタンプ型、出力フォーマット、用紙サイズ、OCR、カラーおよび両面オプションを有効にするか否かおよびファイル名を指定できるようにする。図8Fのユーザー・インターフェース画面は、ユーザーがデータに加えられるスタンプ付けの型を指定できるようにする。利用可能な選択肢は、タイムスタンプ、ベイツ・スタンプおよび透かしであるが、実施形態はこれらの例に限定されず、他の型のスタンプ/マークが使われてもよい。さらに、複数のスタンプおよびマークが選択されてもよい。図8Gのユーザー・インターフェースは、ユーザーが、標準時ゾーン、垂直方向位置および水平方向位置およびフォント設定を含む高度なタイムスタンプ設定を指定できるようにする。図8Hのユーザー・インターフェースは、ユーザーが高度なベイツ・スタンプ設定を指定できるようにする。図8Iのユーザー・インターフェースは、ユーザーが高度な透かし設定を指定できるようにする。
段階1106では、ユーザーは、データ・ストレージ・アプリケーション138に提供され、最終的にデータ・ストレージ・アプリケーション138およびSIクラウド・アプリケーション160によってデータを処理するために使われる設定を指定する。ユーザーが設定を指定した後、ユーザー・インターフェースによって、ユーザー指定された設定に対して、コンフリクト検査が実行されてもよい。たとえば、エンドユーザー装置110に提供されたユーザー・インターフェースにおいて実装される論理が、設定データを解析して、コンフリクトがあればそれを検出してもよい。コンフリクトが検出される場合、ユーザー・インターフェースはユーザーに通知し、ユーザーにコンフリクトを解消するよう求める。あるいはまた、コンフリクト検査は、データ・ストレージ・アプリケーション138によって段階1110において実行されてもよい。
段階1108では、ひとたびコンフリクトが解決されたら、ユーザーが、たとえば図8Eにおいて<Scan>〔スキャン〕ボタンを選択することによって、データ・ストレージ・アプリケーション138による処理を開始する。<Scan>〔スキャン〕ボタンのユーザー選択に応答して、文書がスキャンされ、スキャン・データが生成される。
段階1110では、ユーザー識別データ、スキャン・データおよび設定がデータ・ストレージ・アプリケーション138に提供される。たとえば、ICEクライアント・アプリケーション112は、スキャン・データもしくは該スキャン・データが記憶されている場所へのリンクおよびユーザーによって選択された設定を示す設定データを含むメッセージを、データ・ストレージ・アプリケーション138に送信してもよい。あるいはまた、ウェブ・ブラウザー114がスキャン・データおよび設定データをデータ・ストレージ・アプリケーション138に提供してもよい。データ・ストレージ・アプリケーション138は任意的に、本稿で先に述べたように、ユーザー設定に基づいてコンフリクト検査を、もし段階1106でユーザー・インターフェースによって実装される論理によってすでに実行されているのでなければ、実行してもよい。
段階1112では、データ・ストレージ・アプリケーション138は、SIクラウド150におけるスタンプ付け/マーク付けアプリケーション166を呼び出し、設定データをスタンプ付け/マーク付けアプリケーション166に提供する。これはたとえば、データ・ストレージ・アプリケーション138が、一つまたは複数のRESTコールをスタンプ付け/マーク付けアプリケーション166に対して行なうことによって実行されてもよい。
段階1114では、スタンプ付け/マーク付けアプリケーション166は、ベイツ・スタンプ付け176コンポーネント、タイムスタンプ付け178コンポーネントおよび透かし180コンポーネントを使ってデータにベイツ・スタンプ、タイムスタンプおよび透かしを加え、スタンプ付け/マーク付けされたデータをデータ・ストレージ・アプリケーション138に返す。本稿で先に述べたように、スタンプ付け/マーク付けアプリケーション166は、ベイツ・スタンプ付け176コンポーネント、タイムスタンプ付け178コンポーネントおよび透かし180コンポーネントのAPIをサポートする。
タイムスタンプ・アプリケーションから処理されたデータを受信した後、段階1116において、データ・ストレージ・アプリケーション138はスタンプ付け/マーク付けされたデータを一つまたは複数のサードパーティー・サービス190に処理のために提供する。たとえば、データ・ストレージ・アプリケーション138はスタンプ付け/マーク付けされたデータをクラウド・ストレージ・サービスに提供してもよい。これは、記憶されたデータの完全性(integrity)を維持する要求を満たすために有用でありうる。これは、データ・ストレージ・アプリケーション138が、サードパーティー・サービス190のAPIに準拠する一つまたは複数の要求を生成し、送信することを含んでいてもよい。ある実施形態によれば、データ・ストレージ・アプリケーション138は、サードパーティー・サービス190によって要求されるアクセスおよび認証情報があればそれを管理する。これはたとえば、サードパーティー・サービス190への有効なトークンを提供することを含んでいてもよい。
D.統合の第4型:直接リンク
もう一つの実施形態によれば、SIクラウドおよびICEクラウドは直接リンクを使って統合される。すなわち、エンドユーザー装置をSIクラウド150に直接的にリンクする。この手法によれば、ICEクラウド・マネージャ122または諸ICEクラウド・アプリケーション130のうちの一つのようなICEクラウド・アプリケーションがエンドユーザー装置のためのユーザー・インターフェースを提供する。ユーザー・インターフェースは、SIクラウド150への埋め込まれたリンクをもつ、アイコン、サムネイル画像、シンボルなどといったユーザー・インターフェース・オブジェクトを含む。埋め込まれたリンクはたとえば、SIクラウド・マネージャ152またはSIクラウド・アプリケーション160の一つをポイントしてもよい。エンドユーザー装置のユーザーは、該ユーザー・インターフェース・オブジェクトを選択して、エンドユーザー装置を、SIクラウド150と、より特定的にはたとえばSIクラウド・マネージャ152またはSIクラウド・アプリケーション160のうちの一つと直接的に接続する。
ICEクラウド・アプリケーションによってエンドユーザー装置に提供されるユーザー・インターフェースは、たとえばウェブ・ベースのユーザー・インターフェースによって実装されてもよい。図12Aは、さまざまなクラウド・サービスについてのアイコン、特にICEクラウド・アプリケーション130についてのアイコンを表示するエンドユーザー装置のための例示的なユーザー・インターフェース画面1200である。たとえば、ユーザー・インターフェース画面1200は、ベイツ・スタンプ付けアプリケーション134、法廷電子提出準備アプリケーション136、データ・ストレージ・アプリケーション138などに対応するアイコンを含んでいる。これらのアイコンのそれぞれは、対応するICEクラウド・アプリケーション130をポイントするリンクを含んでおり、リンクを選択すると、対応するICEクラウド・アプリケーション130が呼び出される。あるいはまた、リンクはICEクラウド・マネージャ122をポイントしていて、リンクを選択するとICEクラウド・マネージャ122が呼び出されて、該ICEクラウド・マネージャ122が、たとえば対応するICEクラウド・アプリケーション130を同定する要求に含まれる情報に基づいて、対応するICEクラウド・アプリケーションを呼び出すのでもよい。
ユーザー・インターフェース画面1200は、SIクラウド150へのアクセスを提供する。ある実施形態によれば、ユーザー・インターフェース画面1200は、SIクラウド・マネージャ152に対応する特定のアイコン1202を含む。特定のアイコン1202は、SIクラウド・マネージャ152をポイントする埋め込まれたURLを有する。埋め込まれたリンクを選択すると、ウェブ・ページの要求が生成されて、SIクラウド・マネージャ152に送信される。要求は、エンドユーザー装置のユーザーを有効確認するためにSIクラウド・マネージャ152が使う情報を含んでいる。要求に含まれる情報の型は、具体的な実装に依存して変化してもよく、実施形態はいかなる特定の型の情報にも限定されない。情報の例は、限定なしに、エンドユーザー装置のユーザーのユーザーID、エンドユーザー装置を一意的に同定する装置識別情報、たとえばシリアル番号、MACアドレスなど、一つまたは複数のトークンまたはユーザーID、装置識別データおよびトークンの任意の組み合わせを含む。情報は、ローカル・キャッシュのようなエンドユーザー装置のローカル記憶に記憶されてもよい。この例では、一つまたは複数のトークンは、アクセスを認可するためにSIクラウド・マネージャ152によって使われるので、SIクラウド・マネージャ152に固有である。
前記情報は、一つまたは複数のURLパラメータ、クエリー文字列、クッキーなどを介して、任意の既知の技法を使って、SIクラウド・マネージャ152に提供されてもよい。SIクラウド・マネージャ152は、前記情報を受信し、ユーザーがエンドユーザー装置から直接SIクラウド・マネージャ152にアクセスすることを認可されていることを保証するために、前記情報を検証する。SIクラウド・マネージャ152は、ユーザー、装置およびトークンが現在有効であることを保証するために、受領された情報を、SIクラウド・データ184に含まれている情報と比較することによって、前記情報を検証してもよい。たとえば、エンドユーザー装置110からユーザーID、装置IDおよびトークンを含む情報を受信すると、SIクラウド・マネージャ152は、SIクラウド・データ184におけるユーザー、認可およびトークン・データ188が、同じユーザーID、装置IDおよびトークンをもつエントリーを含んでいるかどうかおよびもし含んでいれば該トークンが現在有効であるかどうかを判定する。
ユーザーが検証された後、SIクラウド・マネージャ152は、ユーザーに、SIクラウド・マネージャ152を介したSIクラウド150作業フローへのアクセスを含め、SIクラウド機能へのアクセスを承認する。図12Bは、二つのSIクラウド150作業フローについてのアイコンを表示するエンドユーザー装置のための例示的なユーザー・インターフェース画面1220を描くブロック図である。この例では、二つのSIクラウド150作業フローは、SIクラウド・アプリケーション160によって実装される。ユーザーは、対応する作業フローについて設定情報を閲覧し、更新するためにアイコンを選択してもよい。図12Cは、図12Bに描かれている「Workflow 1」〔作業フロー1〕についての例示的なユーザー・インターフェース画面1240を描くブロック図である。ユーザー・インターフェース画面1240はユーザーがWorkflow 1について設定を閲覧し、更新することを許容する。更新された設定はSIクラウド150によって保存され、そのユーザーが次にWorkflow 1を呼び出すときにデフォルトとして使われる。これは、ユーザーが、単にエンドユーザー装置110に表示される「Start」〔開始〕アイコンを選択することによって、Workflow 1を任意の回数、簡単に繰り返し実行できるようにする。
SIクラウド・マネージャ152への直接アクセスを提供するコンテキストで実施形態が記述されているが、実施形態はこの例に限定されず、本手法は、SIクラウド・アプリケーション160にアクセスするために使われてもよい。たとえば、ユーザー・インターフェース画面1200(図12A)は、一つまたは複数のSIクラウド・アプリケーション160についてのアイコンを提供してもよい。ここで、各アイコンはSIクラウド・アプリケーション160の一つをポイントする。この例では、特定のSIクラウド・アプリケーションについての特定のアイコンを選択すると、エンドユーザー装置に記憶されている、その特定のSIクラウド・アプリケーションのための対応するトークンが、その特定のクラウド・アプリケーションに、認証のために送られる。認証は、リンクの選択によって呼び出されるその特定のSIクラウド・アプリケーションによって実行されてもよい。あるいはまた、SIクラウド・アプリケーションのためのアイコンがSIクラウド・マネージャ152への埋め込まれたリンクを含んでいてもよく、アイコンが選択されると、SIクラウド・マネージャ152に送られる要求が、ユーザーによって選択された該アイコンに対応するSIクラウド・アプリケーションを同定するデータを含む。SIクラウド・マネージャ152は、その情報を認証し、成功であれば、選択されたSIクラウド・アプリケーションのためのユーザー・インターフェースを提供するか、あるいは選択されたSIクラウド・アプリケーションに制御をリダイレクトする。
図13は、直接リンクを使ってSIクラウドおよびICEクラウドを統合するための手法を描く流れ図 1300である。段階1302では、本稿で先に述べたように、エンドユーザー装置110のユーザーは、ICEクライアント・アプリケーション112またはウェブ・ブラウザー114を介してICEクラウド120にアクセスする。たとえば、ユーザー装置110のディスプレイが、図12Aのユーザー・インターフェース画面1200を自動的に表示してもよく、あるいは、ユーザーがエンドユーザー装置110のディスプレイ上でユーザー・インターフェース・コントロールを選択することに応答して、ユーザー・インターフェース画面1200が表示されてもよい。先の諸例と同様に、これは、ユーザーが、たとえばドロップダウンメニューからユーザーを選択することによって自らを同定すること、たとえばエンドユーザー装置110に付随するスキャナーを介して身分証カードをスキャンして認証を完了すること、ユーザーIDおよびパスワードのようなユーザー・クレデンシャルを入力することなどを含んでいてもよい。ユーザー・クレデンシャルの検証は、エンドユーザー装置110上でローカルになされてもよく、あるいはユーザー検証サービス、ICEクラウド・マネージャ122、ICEクラウド・アプリケーション130などといったリモート・サービスに関わってもよい。
段階1304では、エンドユーザー装置がユーザー・インターフェースを表示する。たとえば、エンドユーザー装置110は、ICEクラウド・アプリケーション130に対応するアイコンを含む図12Aのユーザー・インターフェース画面1200を表示する。ユーザー・インターフェース画面1200は、SIクラウド・マネージャ152に対応する特定のアイコン1202をも含んでおり、SIクラウド・マネージャ152をポイントする埋め込まれたURLをもつ。
段階1306では、ユーザーは、SIクラウド・アプリケーションのアイコンを選択する。たとえば、エンドユーザー装置110がタッチスクリーン・ディスプレイを含んでいるとして、ユーザーは、指またはスタイラスを使って、SIクラウド・マネージャ152に対応する特定のアイコン1202を選択してもよい。
段階1308では、特定のアイコン1202の選択に応答して、特定のアイコン1202における埋め込まれたリンクに基づいて要求が生成され、SIクラウド・マネージャ152に送信される。本稿で先に述べたように、この要求は、ユーザーID、装置IDおよびトークンのような情報を含んでいてもよい。
段階1310では、SIクラウド・アプリケーションは、要求に含まれていた情報を使って、エンドユーザー装置のユーザーを有効確認する。たとえば、SIクラウド・マネージャ152は、要求に含まれているまたは要求によって参照されているトークンが現在有効なトークンであるかどうかを、前記ユーザーID、装置IDおよびトークンを、ユーザー、認可およびトークン・データ144に含まれている情報と比較することによって判定することによって、ユーザーを確認する。
段階1310においてユーザーが成功裏に確認された場合、段階1312において、ユーザー・インターフェースがエンドユーザー装置に提供される。たとえば、それぞれ図12Bおよび図12Cのユーザー・インターフェース画面1220および1240を提供するために、SIクラウド・マネージャ152は、一つまたは複数のウェブ・ページを生成して、エンドユーザー装置110に送信してもよい。段階1314では、エンドユーザー装置のユーザーは、SIクラウド・アプリケーションによって提供されるユーザー・インターフェースを介して、SIクラウド・アプリケーションの機能にアクセスする。たとえば、エンドユーザー装置110のユーザーは、それぞれ図12Bおよび図12Cのユーザー・インターフェース画面1220および1240を使って、SIクラウド・マネージャ152によって提供される機能にアクセスする、つまりWorkflow 1およびWorkflow 2にアクセスする。
上述した手法は、ユーザーフレンドリーな仕方で、たとえばわずらわしく誤りのもとになりうるユーザーが手作業でセキュリティー情報を指定する必要なしに、SIクラウド150のセキュリティー要求を満たすエンドユーザー装置を介してSIクラウド150における機能への直接ユーザー・アクセスを提供する。他の統合手法と同様、本アプローチは、エンドユーザー装置上でSIクラウド150の特定のAPIを実装する必要を回避する。さらに、本手法は、SIクラウド・アプリケーション160の機能へのアクセスを提供するが、特定のエンドユーザー装置と一緒に機能するようSIクラウド・アプリケーション160を修正する必要なく、たとえばSIクラウド・アプリケーション160と一緒に動作するようICEクラウド・アプリケーション130を作成または修正することによってICEクラウド120において該機能を実装する必要もない。これは、SIクラウド・アプリケーション160によって提供される機能にアクセスするために一つまたは複数のICEクラウド・アプリケーション130の実行を回避することによって、計算および記憶資源をも削減する。
IV.ユーザーおよび加入のプロビジョニング
ICEクラウド120は、ユーザーおよび加入を生成するための機能を含んでおり、ある実施形態によれば、ICEクラウド120およびSIクラウド150の両方における対応するユーザーおよび加入の生成を自動的に扱う。これは、ライセンシング要求を満たすようICEクラウド120およびSIクラウド150の両方において諸装置を登録することをも含んでいてもよい。
図14A〜図14Eは、本稿で「ユーザー・プロビジョニング・ユーザー・インターフェース」とも称されるユーザー・インターフェース画面を描いている。これは、管理ユーザーがユーザーおよび加入をプロビジョニングすることを許容する。ある実施形態によれば、ユーザー・インターフェース画面は、ICEクラウド・マネージャ122によって生成される。ユーザー・インターフェース画面は、ウェブ・ベースのユーザー・インターフェースとして実装されてもよい、すなわち、ICEクラウド・マネージャ122によって生成されクライアント装置またはエンドユーザー装置110に送信される一つまたは複数のウェブ・ページによって実装されてもよい。図14A〜図14Eのユーザー・インターフェース画面は、図2Aの組織リスト画面における追加アイコン202のユーザー選択によってアクセスされる。図14A〜図14Eに描かれる例では、各ユーザー・インターフェース画面は、図2A〜図2Iと同様のユーザー・インターフェース上に表示されるタブを選択することによってアクセスされる。
図14Aは、管理ユーザーが、図14Aにおいて「organization」〔組織〕と称される新たなユーザーを追加、すなわち生成することを許容するユーザー・インターフェース画面1400を描いている。実施形態はここでは組織のコンテキストで記載されるが、実施形態は組織に限定されず、任意の型のユーザーに適用可能である。ユーザー・インターフェース画面1400は、管理ユーザーが、組織ID、名前、消費者の型、たとえば加入者、説明および住所情報を含む、該新たな組織のためのさまざまな情報を指定することを許容する。
図14Bは、管理ユーザーが、該新たな組織についての管理ユーザーを生成することを許容するユーザー・インターフェース画面1420を描いている。ユーザー・インターフェース画面1420は、管理ユーザーが、ログインID、パスワード、名前および電子メール・アドレスを含む、該新たな管理ユーザーについてのさまざまな情報を指定することを許容する。
図14Cは、管理ユーザーが、該新たな組織についての一つまたは複数のパッケージへの加入を生成することを許容するユーザー・インターフェース画面1440を描いている。ここでの用法では、用語「パッケージ(package)」とは、一つまたは複数のICEクラウド・アプリケーション130を指し、用語「加入(subscription)」とは、使用権を指す。このように、パッケージへの加入とは、そのパッケージに属するICEクラウド・アプリケーション130を使う権利である。ユーザー・インターフェース画面1440は、管理ユーザーが、パッケージ加入についての期間および/または有効期限日を指定することを許容する。
図14Dは、管理ユーザーが、該新たな組織についての管理者情報を指定することを許容するユーザー・インターフェース画面1460を描いている。顧客管理者情報は、ログインID、名前および電子メール・アドレスを含む。
図14Eは、管理ユーザーが、該組織についての会社プロファイルを指定することを許容するユーザー・インターフェース画面1480を描いている。ユーザー・インターフェース画面1480は、管理ユーザーが、顧客連絡担当者名、顧客連絡担当者電子メール・アドレス、販売注文番号、顧客アカウント番号、業種、部署、会社/部署ごとの従業員数および装置の総数を指定することを許容する。
先述したように新規ユーザーまたは新規加入を追加するためのプロセスを完了すると、ユーザー、認可およびトークン・データ144が、該新規ユーザーおよび/または加入を指定するよう更新される。たとえば、ICEクラウド・マネージャ122は、ユーザー・データ・テーブルにおいて行を追加しうる。ある実施形態によれば、新規ユーザーおよび/または加入がICEクラウド120において生成されるとき、対応する新規ユーザーおよび/または加入がSIクラウド150において生成される。これは、ICEクラウド・マネージャ122が、たとえばSIクラウド・マネージャ152のAPIに準拠する一つまたは複数のRESTコールをすることによって、SIクラウド・マネージャ152に対応するユーザーおよび/または加入を生成するよう命令することによって、達成されてもよい。RESTコールは、SIクラウド150においてユーザーおよび/または新規加入を生成するようSIクラウド・マネージャ152に命令する一つまたは複数のコマンドを指定してもよい。コールに応答して、SIクラウド・マネージャ152は、新規ユーザーおよび/または加入を含めるよう、ユーザー、認可およびトークン・データを更新する。
ある実施形態によれば、ICEクラウド120およびSIクラウド150両方において新規ユーザーが生成された後、本稿で先に述べたようにICEクラウド120およびSIクラウド150を統合するために使われる、ユーザー間の対応を指定するマッピング・データ192が更新される。たとえば、ICEクラウド・マネージャ122からの要求に応答してSIクラウド・マネージャ152が新規ユーザーを生成した後、SIクラウド・マネージャ152は新規ユーザー情報をICEクラウド・マネージャ122に返して、ICEクラウド・マネージャ152がマッピング・データ192を更新できるようにする。この手法は、ユーザーが、ICEクラウド・マネージャ152によって提供されるユーザー・インターフェースを使って、新規ユーザーおよび/または加入を生成できるようにし、その後、ICEクラウド120における新規ユーザーおよび/または加入に対応するSIクラウド150における新規ユーザーおよび/または加入を自動的に生成するという恩恵を提供する。これはシームレスに実行され、ユーザーのクライアント装置がSIクラウド150のAPIを実装することを要求せず、あるいはユーザーがSIクラウド150のユーザー・インターフェースを学習することを要求しない。
V.実装例。
ある実施形態によれば、本稿に記載される技法は、少なくとも一つのコンピューティング装置によって実装される。本技法は、全体的にまたは部分的に、パケット・データ・ネットワークのようなネットワークを使って結合されている少なくとも一つのサーバー・コンピュータおよび/または他のコンピューティング装置の組み合わせを使って実装されてもよい。コンピューティング装置は、本技法を実行するよう固定構成とされていてもよいし、あるいは本技法を実行するよう持続的にプログラムされた、少なくとも一つの特定用途向け集積回路(ASIC)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)のようなデジタル電子デバイスを含んでいてもよいし、あるいはファームウェア、メモリ、他の記憶または組み合わせにおけるプログラム命令に従って本技法を実行するようプログラムされた少なくとも一つの汎用ハードウェア・プロセッサを含んでいてもよい。そのようなコンピューティング装置は、カスタムの固定構成論理、ASICまたはFPGAをカスタムのプログラミングと組み合わせて、記載されている技法を達成してもよい。コンピューティング装置はサーバー・コンピュータ、ワークステーション、パーソナル・コンピュータ・システム、ポータブル・コンピュータ・システム、ハンドヘルド装置、モバイル・コンピューティング装置、ウェアラブル装置、身体取り付けまたは埋め込み可能な装置、スマートフォン、スマート機器、インターネットワーキング装置、自律的もしくは半自律的装置、たとえばロボットまたは無人地上または航空機、記載される技法を実装するために固定構成論理および/またはプログラム論理を組み込んでいる他の任意の装置、一つまたは複数の仮想コンピューティング・マシンまたはデータ・センターにおけるインスタンスおよび/またはサーバー・コンピュータおよび/またはパーソナル・コンピュータのネットワークであってもよい。
図15は、実施形態が実装されうる例示的なコンピュータ・システムを示すブロック図である。図15の例では、開示される技術をハードウェア、ソフトウェアまたはハードウェアとソフトウェアの組み合わせにおいて実装するためのコンピュータ・システム1500および命令は概略的に、たとえば四角および円で表現されている。これは、コンピュータ・アーキテクチャーおよびコンピュータ・システム実装について伝えるために本開示が関係する分野の当業者によって普通に使用されるのと同じ詳細さのレベルである。
コンピュータ・システム1500は、コンピュータ・システム1500のコンポーネント間で電子信号経路を通じて情報および/または命令を通信するためのバスおよび/または他の通信機構を含んでいてもよい入出力(I/O)サブシステム1502を含む。I/Oサブシステム1502は、I/Oコントローラ、メモリ・コントローラおよび少なくとも一つのI/Oポートを含んでいてもよい。電子信号経路は図面において概略的に、たとえば線、単方向矢印または双方向矢印として表現される。
少なくとも一つのハードウェア・プロセッサ1504が、情報および命令を処理するために、I/Oサブシステム1502に結合されている。ハードウェア・プロセッサ1504は、たとえば、汎用マイクロプロセッサまたはマイクロコントローラおよび/または特殊目的マイクロプロセッサ、たとえば埋め込みシステムまたはグラフィック処理ユニット(GPU)またはデジタル信号プロセッサまたはARMプロセッサを含んでいてもよい。プロセッサ1504は、統合された算術論理ユニット(ALU)を有していてもよく、あるいは別個のALUに結合されていてもよい。
コンピュータ・システム1500は、プロセッサ1504によって実行される命令およびデータを電子的にデジタル的に記憶するために、I/Oサブシステム1502に結合されている、メイン・メモリのようなメモリ1506の一つまたは複数のユニットを含む。メモリ1506は、さまざまな形のランダム・アクセス・メモリ(RAM)または他の動的記憶装置のような揮発性メモリを含んでいてもよい。メモリ1506はまた、一時変数または他の中間的な情報を、プロセッサ1504によって実行されるべき命令の実行の間、記憶しておくために使われてもよい。そのような命令は、プロセッサ1504にとってアクセス可能な非一時的なコンピュータ可読記憶媒体に記憶されるとき、コンピュータ・システム1500を、該命令において指定される動作を実行するようカスタマイズされた特殊目的機械にすることができる。
コンピュータ・システム1500はさらに、I/Oサブシステム1502に結合された、プロセッサ1504のための情報および命令を記憶するための読み出し専用メモリ(ROM)1508または他の静的記憶装置のような不揮発性メモリを含む。ROM 1508はさまざまな形のプログラム可能ROM(PROM)、たとえば消去可能なPROM(EPROM)または電気的に消去可能なPROM(EEPROM)を含んでいてもよい。持続的記憶のユニット1510は、さまざまな形の不揮発性RAM(NVRAM)、たとえばフラッシュメモリまたは半導体記憶、磁気ディスクまたは光ディスク、たとえばCD-ROMもしくはDVD-ROMを含んでいてもよく、情報および命令を記憶するためにI/Oサブシステム1502に結合されていてもよい。記憶1510は、プロセッサ1504によって実行されたときに本稿の技法を実行するコンピュータ実装方法の実行を引き起こす命令およびデータを記憶するために使われてもよい非一時的なコンピュータ可読媒体の例である。
メモリ1506、ROM 1508または記憶1510における命令は、モジュール、メソッド、オブジェクト、関数、ルーチンまたはコールとして編成された命令の一つまたは複数の集合を含んでいてもよい。命令は、一つまたは複数のコンピュータ・プログラム、オペレーティング・システム・サービスまたはモバイル・アプリを含むアプリケーション・プログラムとして編成されうる。命令は、オペレーティング・システムおよび/またはシステム・ソフトウェア;マルチメディア、プログラミングもしくは他の機能をサポートするための一つまたは複数のライブラリ;TCP/IP、HTTPまたは他の通信プロトコルを実装するためのデータ・プロトコル命令またはスタック;HTML、XML、JPEG、MPEGもしくはPNGを使ってコーディングされたファイルをパースまたはレンダリングするファイル・フォーマット処理命令;グラフィカル・ユーザー・インターフェース(GUI)、コマンドライン・インターフェースまたはテキスト・ユーザー・インターフェースのための命令をレンダリングまたは解釈するユーザー・インターフェース命令;オフィス・スイート、インターネット・アクセス・アプリケーション、設計および製造アプリケーション、グラフィック・アプリケーション、オーディオ・アプリケーション、ソフトウェア・エンジニアリング・アプリケーション、教育アプリケーション、ゲームまたはその他のアプリケーションのようなアプリケーション・ソフトウェアを含んでいてもよい。命令は、ウェブ・サーバー、ウェブ・アプリケーション・サーバーまたはウェブ・クライアントを実装してもよい。 命令は、プレゼンテーション層、アプリケーション層およびデータ記憶層、たとえば構造化照会言語(SQL)を使用するかまたはSQLを使用しないリレーショナルデータベースシステム、オブジェクトストア、グラフデータベース、フラットファイルシステムまたは他のデータ記憶として編成されてもよい。
コンピュータ・システム1500は、I/Oサブシステム1502を介して少なくとも一つの出力装置1512に結合されてもよい。ある実施形態では、出力装置1512はデジタル・コンピュータ・ディスプレイである。さまざまな実施形態において使用されうるディスプレイの例は、タッチスクリーン・ディスプレイまたは発光ダイオード(LED)ディスプレイまたは液晶ディスプレイ(LCD)または電子ペーパー・ディスプレイを含む。コンピュータ・システム1500は、ディスプレイ装置の代わりに、またはディスプレイ装置に加えて、他の型の出力装置1512を含んでいてもよい。他の出力装置1512の例には、プリンター、チケットプリンター、プロッター、プロジェクター、サウンドカードまたはビデオカード、スピーカー、ブザーまたは圧電デバイスまたは他の可聴デバイス、ランプまたはLEDまたはLCDインジケーター、触覚デバイス、アクチュエーターまたはサーボを含む。
信号、データ、コマンド選択またはジェスチャーをプロセッサ1504に伝えるために、少なくとも一つの入力装置1514がI/Oサブシステム1502に結合される。入力装置1514の例は、タッチスクリーン、マイクロフォン、静止およびビデオ・デジタルカメラ、英数字および他のキー、キーパッド、キーボード、グラフィックスタブレット、イメージスキャナー、ジョイスティック、クロック、スイッチ、ボタン、ダイヤル、スライドおよび/またはさまざまな型のセンサー、たとえば力センサー、モーションセンサー、熱センサー、加速度計、ジャイロスコープおよび慣性測定ユニット(IMU)センサーおよび/またはさまざまな型のトランシーバー、たとえばセルラーもしくはWi-Fiのようなワイヤレスの無線周波数(RF)または赤外線(IR)トランシーバーおよび全地球測位システム(GPS)トランシーバーを含む。
もう一つの型のユーザー入力装置は、入力機能の代わりにまたは入力機能に加えて、表示画面上でのグラフィカル・インターフェースにおけるナビゲーションのような、カーソル制御または他の自動化された制御を実行しうる制御装置1516である。制御装置1516は、方向情報およびコマンド選択をプロセッサ1504に通信し、ディスプレイ1512上のカーソル移動を制御するためのタッチパッド、マウス、トラックボールまたはカーソル方向キーであってもよい。入力装置は、少なくとも、第一軸(たとえばx)および第二軸(たとえばy)の二つの軸方向において二つの自由度を有していてもよく、これにより該装置は平面内での位置を指定できる。もう一つの型の入力装置は、ジョイスティック、ワンド、コンソール、ステアリングホイール、ペダル、ギアシフト機構または他の型の制御装置といった、有線、無線または光学式の制御装置である。入力装置1514は、ビデオカメラおよび奥行きセンサーのような複数の異なる入力装置の組み合わせを含ンでいてもよい。
もう一つの実施形態では、コンピュータ・システム1500は、出力装置1512、入力装置1514および制御装置1516のうちの一つまたは複数が省略されているIoT(internet of things)装置を有していてもよい。あるいは、そのような実施形態では、入力装置1514は、一つまたは複数のカメラ、動き検出器、温度計、マイクロフォン、振動検出器、他のセンサーまたは検出器、測定装置またはエンコーダを有していてもよく、出力装置1512は、単一ラインLEDまたはLCDディスプレイ、一つまたは複数のインジケーター、ディスプレイ・パネル、メーター、バルブ、ソレノイド、アクチュエーターまたはサーボのような特殊目的ディスプレイを有していてもよい。
コンピュータ・システム1500がモバイル・コンピューティング装置であるとき、入力装置1514は、複数のGPS衛星に対して三角測量し、コンピュータ・システム1500の地球物理学的な位置について緯度‐経度値のような位置情報提供または位置データを生成することができるGPSモジュールに結合された全地球測位システム(GPS)受信機を有していてもよい。出力装置1512は、位置報告パケット、通知、パルスまたはハートビート信号、あるいは単独でもしくは他の特定用途向けデータと組み合わせてコンピュータ・システム1500の位置を指定する、ホスト1524またはサーバー1530に向けられる他の反復的なデータ送信を生成するためのハードウェア、ソフトウェア、ファームウェアおよびインターフェースを含んでいてもよい。
コンピュータ・システム1500は、本稿に記載される技法を実施するのに、カスタマイズされた固定構成論理、少なくとも一つのASICもしくはFPGA、ロードされて使用もしくは実行されたときにコンピュータ・システムと組み合わさってコンピュータ・システムを特殊目的機械として動作するようにするまたはプログラムするファームウェアおよび/またはプログラム命令または論理を使ってもよい。ある実施形態によれば、本稿の技法は、プロセッサ1504がメイン・メモリ1506に含まれている少なくとも一つの命令の少なくとも一つのシーケンスを実行するのに応答して、コンピュータ・システム1500によって実行される。そのような命令は、記憶装置1510のような別の記憶媒体からメイン・メモリ1506に読み込まれてもよい。メイン・メモリ1506に含まれている命令のシーケンスの実行により、プロセッサ1504が本稿に記載されるプロセス段階が実行する。代替的な実施形態では、ソフトウェア命令の代わりにまたはソフトウェア命令と組み合わせて固定構成の回路が使用されてもよい。
本稿で用いられるところの用語「記憶媒体」は、機械に特定の仕方で動作させるデータおよび/または命令を記憶する任意の非一時的な媒体を指す。そのような媒体は、不揮発性媒体および揮発性媒体を含みうる。不揮発性媒体は、たとえば、記憶装置1510のような光学式または磁気ディスクを含む。揮発性媒体は、メイン・メモリ1506のような動的メモリを含む。記憶媒体の一般的な形は、たとえば、ハードディスク、半導体ドライブ、フラッシュドライブ、磁気データ記憶媒体、任意の光学式もしくは物理的データ記憶媒体、メモリ・チップなどを含む。
記憶媒体は、伝送媒体とは異なるが、伝送媒体と連携して使用されてもよい。 伝送媒体は、記憶媒体の間で情報を転送することに関与する。たとえば、伝送媒体は、I/Oサブシステム1502のバスを含むワイヤを含む、同軸ケーブル、銅線および光ファイバーを含む。伝送媒体は、電波および赤外データ通信の間に生成されるような音響波または光波の形態をとることもできる。
さまざまな形の媒体が、実行のために少なくとも一つの命令の少なくとも一つのシーケンスをプロセッサ1504に搬送することに関わることがある。たとえば、命令は、初期にはリモート・コンピュータの磁気ディスクまたは半導体ドライブ上で搬送されてもよい。リモート・コンピュータは、その動的メモリに命令をロードし、モデムを使用して光ファイバーまたは同軸ケーブルまたは電話回線などの通信リンクを通じて命令を送信することができる。コンピュータ・システム1500にローカルなモデムまたはルータは、通信リンク上でデータを受信し、そのデータをコンピュータ・システム1500が読むことができるフォーマットに変換することができる。たとえば、無線周波数アンテナまたは赤外線検出器などの受信機は、無線または光信号で搬送されるデータを受信でき、適切な回路が、データをバス上に置くなど、I/Oサブシステム1502にデータを提供することができる。I/Oサブシステム1502は、データをメモリ1506に搬送し、そこからプロセッサ1504が命令を取り出して実行する。メモリ1506によって受領された命令は、任意的に、プロセッサ1504による実行の前または後のいずれかに、記憶装置1510に格納されてもよい。
コンピュータ・システム1500は、バス1502に結合された通信インターフェース1518をも含む。通信インターフェース1518は、ネットワーク1522またはインターネット上の公共もしくは私設クラウドのような少なくとも一つの通信ネットワークに直接的または間接的に接続されているネットワーク・リンク1520への双方向のデータ通信結合を提供する。たとえば、通信インターフェース1518は、イーサネット(登録商標)ネットワーキング・インターフェース、統合サービスデジタルネットワーク(ISDN)カード、ケーブルモデム、衛星モデムまたはモデムであって、対応する型の通信回線、たとえばイーサネット・ケーブルまたは任意の種類の金属ケーブルまたは光ファイバー回線または電話回線へのデータ通信接続を提供してもよい。ネットワーク1522は、ローカルエリアネットワーク(LAN)、広域ネットワーク(LAN)、広域ネットワーク(WAN)、キャンパス・ネットワーク、インターネットワークまたはそれらの任意の組み合わせを広く表わす。通信インターフェース1518は、互換なLANへのデータ通信接続を提供するためのLANカード、またはセルラー無線電話ワイヤレス・ネットワーキングの諸規格に従ってセルラー・データを送信または受信するように配線されたセルラー無線電話インターフェース、または衛星ワイヤレス・ネットワーキングの諸規格に従ってデジタル・データを送信または受信するよう配線された衛星無線インターフェースを含みうる。そのようないずれかの実装では、通信インターフェース1518は、さまざまな型の情報を表わすデジタル・データ・ストリームを搬送する信号経路を通じて、電気信号、電磁信号または光信号を送信および受信する。
ネットワーク・リンク1520は典型的には、たとえば衛星、セルラー、Wi-Fiまたはブルートゥース(登録商標)技術を使って、直接的なまたは少なくとも一つのネットワークを通じた他のデータ装置への電気的、電磁的または光学式のデータ通信を提供する。たとえば、ネットワーク・リンク1520は、ネットワーク1522を通じてホスト・コンピュータ1524への接続を提供してもよい。
さらに、ネットワーク・リンク1520は、ネットワーク1522を通じて、あるいはインターネットワーキング装置および/またはコンピュータを介してインターネット・サービス・プロバイダー(ISP)1526によって運営される他のコンピューティング装置への接続を提供してもよい。ISP 1526は、インターネット1528として表現されている世界規模のパケット・データ通信網を通じたデータ通信サービスを提供する。サーバー・コンピュータ1530は、インターネット1528に結合されていてもよい。サーバー1530は、任意のコンピュータ、データ・センター、ハイパーバイザーを有するまたは有さない仮想マシンまたは仮想コンピューティング・インスタンス、あるいはDOCKERまたはKUBERNETESなどのコンテナ化されたプログラム・システムを実行するコンピュータを広義に表わす。サーバー1530は、二つ以上のコンピュータまたはインスタンスを使って実装され、ウェブ・サービス要求、HTTPペイロードにおいてパラメータをもつ一様資源位置指定子(URL)ストリング、APIコール、アプリケーション・サービス・コールまたは他のサービス・コールを送信することによってアクセスされ、使用される電子的なデジタル・サービスを表わしうる。コンピュータ・システム1500およびサーバー1530は、他のコンピュータ、処理クラスター、サーバーファームまたはタスクを実行するかまたはアプリケーションもしくはサービスを実行するために協働するコンピュータの他の組織を含む分散式コンピューティング・システムの要素をなしてもよい。サーバー1530は、モジュール、メソッド、オブジェクト、関数、ルーチンまたはコールとして編成された命令の一つまたは複数のセットを有していてもよい。命令は、一つまたは複数のコンピュータ・プログラム、オペレーティング・システム・サービスまたはモバイル・アプリを含むアプリケーション・プログラムとして編成されてもよい。命令は、オペレーティング・システムおよび/またはシステム・ソフトウェア;マルチメディア、プログラミングもしくは他の機能をサポートするための一つまたは複数のライブラリ;TCP/IP、HTTPまたは他の通信プロトコルを実装するためのデータ・プロトコル命令またはスタック;HTML、XML、JPEG、MPEGもしくはPNGを使ってコーディングされたファイルをパースまたはレンダリングするファイル・フォーマット処理命令;グラフィカル・ユーザー・インターフェース(GUI)、コマンドライン・インターフェースまたはテキスト・ユーザー・インターフェースのための命令をレンダリングまたは解釈するユーザー・インターフェース命令;オフィス・スイート、インターネット・アクセス・アプリケーション、設計および製造アプリケーション、グラフィック・アプリケーション、オーディオ・アプリケーション、ソフトウェア・エンジニアリング・アプリケーション、教育アプリケーション、ゲームまたはその他のアプリケーションのようなアプリケーション・ソフトウェアを含んでいてもよい。サーバー1530は、プレゼンテーション層、アプリケーション層およびデータ記憶層、たとえば構造化照会言語(SQL)を使用するかまたはSQLを使用しないリレーショナルデータベースシステム、オブジェクトストア、グラフデータベース、フラットファイルシステムまたは他のデータ記憶をホストするウェブ・アプリケーション・サーバーを含んでいてもよい。
コンピュータ・システム1500は、ネットワーク(単数または複数)、ネットワーク・リンク1520および通信インターフェース1518を通じて、メッセージを送り、プログラム・コードを含めデータおよび命令を受信することができる。インターネットの例では、サーバー1530は、インターネット1528、ISP 1526、ローカル・ネットワーク1522および通信インターフェース1518を通じて、アプリケーション・プログラムのための要求されたコードを送信してもよい。受信されたコードは、受信される際にプロセッサ1504によって実行されても、および/または、のちの実行のために記憶1510または他の不揮発性記憶に記憶されてもよい。
本節に記載される命令の実行は、プログラム・コードおよびその現在の活動からなる、実行されているコンピュータ・プログラムのインスタンスの形でプロセスを実装してもよい。オペレーティング・システム(OS)に依存して、プロセスは、命令を同時に実行する複数の実行スレッドで構成されていてもよい。この文脈において、コンピュータ・プログラムは命令の受動的な集合であり、一方、プロセスはそれらの命令の実際の実行であってもよい。いくつかのプロセスが同じプログラムに関連付けられていてもよい;たとえば、同じプログラムのいくつかのインスタンスを開くことは、二つ以上のプロセスが実行されることを意味する。複数のプロセスがプロセッサ1504を共有することを許容するためにマルチタスクが実装されてもよい。各プロセッサ1504または該プロセッサのコアは一度に一つのタスクを実行するが、各プロセッサが、各タスクが終了するのを待つ必要なく、実行されているタスクの間で切り換えられるようにするよう、コンピュータ・システム1500はマルチタスクを実装するようにプログラムされてもよい。ある実施形態では、タスクが入出力動作を実行するとき、タスクが該タスクが切り換えられることができることを指示するとき、またはハードウェア割り込みの際に、切り換えが実行されてもよい。複数のプロセスの同時実行の様相を同時に提供するコンテキスト切り換えを迅速に実行することによって、対話型ユーザー・アプリケーションのための高速応答を可能にするために、時分割が実装されてもよい。ある実施形態では、セキュリティーおよび信頼性のために、オペレーティング・システムは、独立したプロセス間の直接通信を防止し、厳密に仲介され制御されたプロセス間通信機能を提供してもよい。