(57)【特許請求の範囲】
【請求項１】
ドキュメントのドキュメントシグネチャを生成するためのコンピュータにより実現される方法であって、
１つ以上のプロセッサが、アプリケーションによる前記ドキュメントに対する変更を受信するステップと、
前記１つ以上のプロセッサが、前記ドキュメントに対して実行された以前のアクションに関連する以前のハッシュの第１のハッシュを生成することによって前記ドキュメントのローリングハッシュと、前記ドキュメントの変更に関連する直近のアクションとを決定するステップと、
前記１つ以上のプロセッサが、前記ドキュメントの変更に関連する直近のアクションの第２のハッシュを生成することによって前記ドキュメントのローリングハッシュオフセットを決定し、前記第２のハッシュと前記ドキュメントに対して実行された前記以前のアクションに関連する以前のハッシュとの間の差分を計算するステップと、
前記１つ以上のプロセッサが、前記ドキュメントを変更したアプリケーションに関連するグローバルに一意的な識別子とシークレットとを決定するステップと、
前記１つ以上のプロセッサが、前記ローリングハッシュ、前記ローリングハッシュオフセット、前記グローバルに一意的な識別子及び前記シークレットを合成することによってドキュメントシグネチャを生成するステップと、
前記ドキュメントシグネチャ、前記グローバルに一意的な識別子、前記ローリングハッシュ及び前記ローリングハッシュオフセットをデータストレージに記憶するステップと、
を有する方法。
【請求項２】
ブランクドキュメントのアプリケーションシグネチャを生成し、ユーザが前記ドキュメントを変更するため前記ブランクドキュメントを前記ユーザに送信するステップを更に有する、請求項１記載の方法。
【請求項３】
前記ドキュメントを受信するステップと、
メタデータと前記シークレットとを抽出するステップと、
シグネチャハッシュを計算するステップと、
前記シグネチャハッシュと前記メタデータ及び前記シークレットとを比較するステップと、
を更に有する、請求項１記載の方法。
【請求項４】
前記シグネチャハッシュと前記メタデータ及び前記シークレットとを比較することによって問題を検出するステップと、
第１のエラーメッセージを送信するステップと、
を更に有する、請求項３記載の方法。
【請求項５】
前記ドキュメントの宛先と前記メタデータに指定された宛先とを比較するステップを更に有する、請求項４記載の方法。
【請求項６】
前記ドキュメントの宛先と前記メタデータに指定された宛先とを比較することによって問題を検出するステップと、
第２のエラーメッセージを送信するステップと、
を更に有する、請求項５記載の方法。
【請求項７】
前記第２のエラーメッセージは、プロセスオーガナイザ、カスタマ、タスクパフォーマ及びモジュールデベロッパの少なくとも１つに送信される、請求項６記載の方法。
【請求項８】
前記ドキュメントを前記メタデータに指定される宛先にルーティングするステップを更に有する、請求項５記載の方法。
【請求項９】
ドキュメントのドキュメントシグネチャを生成するためのコンピュータにより実現されるシステムであって、
１つ以上のプロセッサと、
命令を記憶するメモリと、
を有し、
前記命令は、前記１つ以上のプロセッサにより実行されると、
前記１つ以上のプロセッサが、前記ドキュメントに対して実行された以前のアクションに関連する以前のハッシュの第１のハッシュを生成することによって前記ドキュメントのローリングハッシュと、前記ドキュメントの変更に関連する直近のアクションとを決定するステップと、
前記１つ以上のプロセッサが、前記ドキュメントの変更に関連する直近のアクションの第２のハッシュを生成することによって前記ドキュメントのローリングハッシュオフセットを決定し、前記第２のハッシュと前記ドキュメントに対して実行された前記以前のアクションに関連する以前のハッシュとの間の差分を計算するステップと、
前記１つ以上のプロセッサが、前記ドキュメントを変更したアプリケーションに関連するグローバルに一意的な識別子とシークレットとを決定するステップと、
前記１つ以上のプロセッサが、前記ローリングハッシュ、前記ローリングハッシュオフセット、前記グローバルに一意的な識別子及び前記シークレットを合成することによってドキュメントシグネチャを生成するステップと、
前記ドキュメントシグネチャ、前記グローバルに一意的な識別子、前記ローリングハッシュ及び前記ローリングハッシュオフセットをデータストレージに記憶するステップと、
を前記１つ以上のプロセッサに実行させるシステム。
【請求項１０】
前記命令は更に、ブランクドキュメントのアプリケーションシグネチャを生成し、ユーザが前記ドキュメントを変更するため前記ブランクドキュメントを前記ユーザに送信するステップを前記１つ以上のプロセッサに実行させる、請求項９記載のシステム。
【請求項１１】
前記命令は更に、
前記ドキュメントを受信するステップと、
メタデータと前記シークレットとを抽出するステップと、
シグネチャハッシュを計算するステップと、
前記シグネチャハッシュと前記メタデータ及び前記シークレットとを比較するステップと、
を前記１つ以上のプロセッサに実行させる、請求項９記載のシステム。
【請求項１２】
前記命令は更に、
前記シグネチャハッシュと前記メタデータ及び前記シークレットとを比較することによって問題を検出するステップと、
第１のエラーメッセージを送信するステップと、
を前記１つ以上のプロセッサに実行させる、請求項１１記載のシステム。
【請求項１３】
前記命令は更に、前記ドキュメントの宛先と前記メタデータに指定された宛先とを比較するステップを前記１つ以上のプロセッサに実行させる、請求項１２記載のシステム。
【請求項１４】
前記命令は更に、
前記ドキュメントの宛先と前記メタデータに指定された宛先とを比較することによって問題を検出するステップと、
第２のエラーメッセージを送信するステップと、
を前記１つ以上のプロセッサに実行させる、請求項１３記載のシステム。
【請求項１５】
前記命令は更に、プロセスオーガナイザ、カスタマ、タスクパフォーマ及びモジュールデベロッパの少なくとも１つに前記第２のエラーメッセージを送信するステップを前記１つ以上のプロセッサに実行させる、請求項１４記載のシステム。
【請求項１６】
前記命令は更に、前記ドキュメントを前記メタデータに指定される宛先にルーティングするステップを前記１つ以上のプロセッサに実行させる、請求項１３記載のシステム。
【請求項１７】
請求項１乃至８何れか一項記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、アプリケーション、モジュール及びドキュメントの生成及び変更に関する。特に、本発明は、エンティティとの間で当該ドキュメントが伝送される毎にシグネチャを生成することと、ドキュメントを提供する前にシグネチャを認証するためのシステムとに関する。
【背景技術】
【０００２】
携帯計算装置の利用が、多くのユーザに一般的になってきている。従来のデスクトップコンピュータを有することに加えて、多くのユーザはまた、いくつかのタイプの携帯計算装置を有する。現在の携帯計算装置の具体例として、Ｓｏｎｙ  Ｃｏｒｐ．からのＲｅａｄｅｒ、ＡｍａｚｏｎからのＫｉｎｇｌｅ及びＢａｒｎｅｓ＆ＮｏｂｌｅからのＮｏｏｋなどの読書用の電子装置があげられる。より小型の携帯計算装置として、いくつか例とあげると、Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ  Ｉｎｃ．からのｉＰｈｏｎｅ、Ｒｅｓｅａｒｃｈ  Ｉｎ  ＭｏｔｉｏｎからのＢｌａｃｋｂｅｒｒｙ及びＰａｌｍからのＰｒｅを含む多数のスマートフォンがあげられる。異なるレベルの処理能力及びサイズを提供するノートブック、ラップトップ及びタブレットコンピュータの販売が拡大してきている。
【０００３】
ユーザはしばしば、娯楽用又はビジネス用に携帯計算装置にアプリケーションをダウンロードする。例えば、付加価値を追加する再販売業者などのプロセスオーガナイザは、医師が患者のカルテにデータを入力するためのアプリケーションを作成する。プロセスオーガナイザは、ドキュメントに添付される音声を転写するなど、ドキュメントに対して各種処理を実行したり、医師がドキュメントにメモを手書きするときに手書き解析を実行するためのモジュールデベロッパを取得する。ドキュメントが完成すると、プロセスオーガナイザは、管理者がドキュメントを購入可能なストアに当該ドキュメントをアップロードする。
【０００４】
この設定による１つの問題点は、ドキュメントが少なくとも１つのプロセスオーガナイザ及び複数のモジュールデベロッパ又はタスクパフォーマに送信されるため、違法行為の複数の機会があるということである。プロセスオーガナイザ、モジュールデベロッパ又はタスクパフォーマが認証されていない可能性があるため、ドキュメントは他のパーティなどにより傍受される可能性がある。これは、ビジネスが成長する能力は顧客情報をセキュアに維持することに依存するため、問題である。従って、ドキュメントがパーティ間でセキュアにわたされることを保証することが必要とされる。
【発明の概要】
【０００５】
本発明の実施例は、アプリケーションを認証するためのシグネチャを生成する方法及びシステムを提供することによって、従来技術の短所及び制約を解消する。一実施例では、本発明の実施例のシステムは、複数の携帯電子装置、少なくとも１つのプロセスオーガナイザ、少なくとも１つのモジュールデベロッパ、少なくとも１つのタスクパフォーマ及びワークフローサーバを有する。プロセスオーガナイザは、アプリケーションを生成する。プロセスオーガナイザは、アプリケーションに含まれるモジュールを要求する。あるいは、プロセスオーガナイザは、アプリケーションを完成させるため、タスクを実行するタスクパフォーマと同意する。これは、プロセスオーガナイザがドキュメントの全体構成を生成するのが得意であるが、トランスクリプション、手書き認識などの特殊なエリアを知らないときに、特に有用である。アプリケーションは、アプリケーションを表示及び販売するためのオンラインマーケットプレースモジュールを有するワークフローサーバに送信される。ユーザは、ストアを介しアプリケーションを購入する。
【０００６】
一実施例では、システムはまた、携帯計算装置上で利用するためカスタマイズされたドキュメントを要求及び購入するアドミニストレータを含む。アドミニストレータは、プロセスオーガナイザと接触し、カスタマイズされたドキュメントを生成するアプリケーションを要求できる。例えば、パッケージを配送する企業は、特定のユーザインタフェース又は特殊な機能を所望する可能性がある。プロセスオーガナイザは、アプリケーションを生成し、それをストアにアップロードする。アドミニストレータは、アプリケーションを購入し、それを携帯計算装置上でドキュメントを利用する各種従業員に送信する。
【０００７】
携帯計算装置、プロセスオーガナイザ、タスクパフォーマ及びモジュールデベロッパは、それぞれがログ処理モジュールを有する計算装置である。計算装置の１つがアプリケーション、モジュール又はドキュメントを受信し、アクションを実行すると、ログ処理ユニットは、メタデータとしてアプリケーションに関連するアクションのハッシュを生成する。計算装置がアプリケーション、モジュール又はドキュメントを送信すると、ワークフローサーバは、アプリケーション、モジュール又はドキュメントを認証し、それを宛先にルーティングする。ワークフローサーバは、シグネチャを生成し、当該シグネチャとアプリケーション、モジュール又はドキュメントのメタデータ及びシークレット情報とを比較することによって、アプリケーション、モジュール又はドキュメントを認証する。当該比較が整合している場合、アプリケーション、モジュール又はドキュメントはそれの次の宛先にルーティングされる。当該比較が整合していない場合、アプリケーション、モジュール又はドキュメントをワークフローサーバ及び／又は宛先計算装置に送信する最後の計算装置にエラーが通知される。
【０００８】
本発明の実施例はまた、ドキュメントをルーティングし、ドキュメントの真正性を検証する方法を含むいくつかの新規な方法を含む。一実施例では、ワークフローサーバは、アプリケーション、モジュール又はドキュメントを受信する。ワークフローサーバは、メタデータとシークレット情報とを抽出し、ハッシュを計算する。ワークフローサーバは、シグネチャとメタデータ、シークレット情報及び計算されたハッシュとを比較する。当該比較がコンフリクトを示す場合、エラーメッセージが送信される。コンフリクトがない場合、ワークフローサーバは、宛先とメタデータに指定される宛先とを比較する。コンフリクトがある場合、エラーメッセージが送信される。コンフリクトがない場合、ワークフローサーバは、アプリケーションをそれの宛先にルーティングする。
【０００９】
ここに説明される特徴及び効果は、必ずしもすべてが含まれるとは限らず、多数のさらなる特徴及び効果は、図面及び説明に関して当業者に明らかであろう。さらに、明細書に用いられる言語は可読性及び教示目的のため主として選択され、本発明の主題の範囲を限定するものでないことに留意すべきである。
【図面の簡単な説明】
【００１０】
本発明は、同様の参照番号が同様の要素を参照するのに利用される添付した図面において限定することなく例示のため示される。
【図１】図１は、本発明の実施例によるドキュメントをルーティングするためのシステムの実施例のブロック図である。
【図２Ａ】図２Ａは、本発明の実施例による携帯計算装置、プロセスオーガナイザ、タスクパフォーマ又はモジュールデベロッパの実施例のブロック図である。
【図２Ｂ】図２Ｂは、本発明の実施例によるワークフローサーバのブロック図である。
【図３Ａ】図３Ａは、本発明の実施例による登録モジュールの実施例のブロック図である。
【図３Ｂ】図３Ｂは、本発明の実施例によるページを有するドキュメントを含むアプリケーションのグラフィカル表示である。
【図３Ｃ】図３Ｃは、本発明の実施例によるログエントリのグラフィカル表示である。
【図４】図４は、本発明の実施例によるルーティングモジュールの実施例のブロック図である。
【図５】図５は、本発明の実施例によるオンラインマーケットプレースモジュールの実施例である。
【図６Ａ】図６Ａは、ユーザ、アプリケーション及びモジュールのための本発明の実施例の登録処理を示すフロー図である。
【図６Ｂ】図６Ｂは、モジュールデベロッパからのモジュールを搭載したアプリケーションの登録処理を示すフロー図である。
【図６Ｃ】図６Ｃは、タスクパフォーマからタスクを購入するアプリケーションの登録処理を示すフロー図である。
【図７】図７は、本発明の実施例によるアプリケーションシグネチャの生成を示すフロー図である。
【図８】図８は、本発明の実施例によるドキュメントの変更及びドキュメントシグネチャの生成を示すフロー図である。
【図９】図９は、本発明の実施例によるドキュメントをルーティングするためのステップを示すフロー図である。
【発明を実施するための形態】
【００１１】
ワークフローシステムにおいてアプリケーション、モジュール及びドキュメントを認証及びルーティングするためのシステムが説明される。以下の説明では、説明のため、多数の具体的な詳細が本発明の完全な理解を提供するため与えられる。しかしながら、本発明はこれらの具体的詳細なしに実現可能であることが当業者に明らかであろう。他の例では、本発明を不明りょうにすることを回避するため、構成及び装置はブロック図により示される。例えば、本発明の実施例は、電子ペーパー、ｅペーパー又は電子インクディスプレイを利用するＡｍａｚｏｎのＫｉｎｄｌｅなどのハードウェア及びソフトウェアプラットフォームに例示される携帯計算装置を参照して、以下で実施例により説明される。しかしながら、本発明の実施例は、インク、データ及びコマンドを取得し、ドキュメントを電子的に送信可能な何れかのタイプの携帯計算装置に適用される。
【００１２】
明細書における“一実施例”又は“実施例”という表現は、当該実施例に関して説明される特定の特徴、構成又は特性が本発明の少なくとも１つの実施例に含まれることを意味する。明細書の各所における“一実施例では”というフレーズの出現は、必ずしもすべてが同一の実施例を参照しているとは限らない。特に、本発明の実施例は、２つの異なるアーキテクチャに関して後述され、コンポーネントの一部は双方のアーキテクチャにおいて動作可能である一方、他のものはそうでない。
【００１３】
以下の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及びシンボル表現に関して提供される。これらのアルゴリズムによる説明及び表現は、データ処理分野の当業者が自らの研究の本質を当該分野の他者に最も効果的に伝えるのに利用される手段である。アルゴリズムは、ここでは一般に、所望の結果を導く自己一貫的なステップシーケンスであると想定される。これらのステップは、物理量の物理的操作を要求するものである。通常、必要ではないが、これらの量は格納、転送、合成、比較及び操作可能な電気又は磁気信号のドキュメントをとる。主に通常の利用のため、これらの信号をビット、値、要素、シンボル、文字、項、数などとして参照することが便利であるとわかる。
【００１４】
しかしながら、上記及び同様の用語のすべては適切な物理量に関連付けされ、これらの量に適用される単なる便宜上のラベルであることに留意すべきである。特段の断りがない場合、以下の説明から明らかなように、本説明を通じて、“処理”、“計算”、“算出”、“決定”、“表示”などの用語を利用した説明は、コンピュータシステムのレジスタ及びメモリ内で物理（電子）量として表現されるデータを操作して、コンピュータシステムのメモリ、レジスタ又は他の情報ストレージ、伝送又は表示装置内の物理量として同様に表現される他のデータに変換するコンピュータシステム又は同様の電子計算装置のアクション及びプロセスを表す。
【００１５】
本発明の実施例はまた、ここでの処理を実行する装置に関する。当該装置は、要求される目的のため具体的に構成されてもよいし、あるいはコンピュータに格納されているコンピュータプログラムにより選択的にアクティブ化又は再設定される汎用コンピュータを有してもよい。このようなコンピュータプログラムは、限定することなく、フロッピー（登録商標）ディスク、光ディスク、ＣＤ  ＲＯＭ及び光磁気ディスクを含む何れかのタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気若しくは光カード又は電子命令を格納するのに適した何れかのタイプのメディアなど、それぞれがコンピュータシステムバスに接続されたコンピュータ可読記憶媒体に格納されてもよい。
【００１６】
本発明は、完全にハードウェアの実施例、完全にソフトウェアの実施例又はハードウェアとソフトウェア要素との双方を含む実施例のドキュメントをとることが可能である。好適な実施例では、本発明は、以下に限定されることなく、ファームウェア、レジデントソフトウェア、マイクロコードなどを含むソフトウェアにより実現される。
【００１７】
さらに、本発明は、コンピュータ又は何れかの命令実行システムによる利用のため又は関連するプログラムコードを提供するコンピュータ利用可能な媒体又はコンピュータ可読媒体からアクセス可能なコンピュータプログラムプロダクトのドキュメントをとることが可能である。本説明のため、コンピュータ利用可能な媒体又はコンピュータ可読媒体は、命令実行システム、装置又はデバイスによる利用のため又は関連してプログラムを内蔵、格納、通信、伝搬又は伝送可能な任意の装置とすることが可能である。
【００１８】
上記媒体は、電子、磁気、光学、電磁気、赤外線又は半導体システム（又は装置若しくはデバイス）又は伝搬媒体とすることが可能である。コンピュータ可読媒体の具体例として、半導体若しくはソリッドステートメモリ、磁気テープ、着脱可能なコンピュータディスケット、ＲＡＭ、ＲＯＭ，リジッド磁気ディスク及び光ディスクがあげられる。光ディスクの現在の具体例は、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ及びＤＶＤを含む。
【００１９】
プログラムコードを格納及び／又は実行するのに適したデータ処理システムは、システムバスを介しメモリ要素に直接的又は間接的に接続される少なくとも１つのプロセッサを含む。メモリ要素は、実行中にバルクストレージからコードが抽出される必要のある回数を低減するため、プログラムコードの実際の実行中に利用されるローカルメモリ、バルクストレージ及び少なくともいくつかのプログラムコードの一時的な格納を提供するキャッシュメモリを含むことが可能である。
【００２０】
入出力（Ｉ／Ｏ）装置（限定することなく、キーボード、ディスプレイ、ポインティング装置などを含む）は、Ｉ／Ｏコントローラを介在して又は直接的にシステムに接続可能である。
【００２１】
ネットワークアダプタはまた、データ処理システムがプライベート又はパブリックネットワークを介在することにより他のデータ処理システム、リモートプリンタ又は記憶装置に接続することを可能にするため、システムに接続されてもよい。モデム、ケーブルモデム及びイーサネット（登録商標）カードは、現在利用可能なタイプのネットワークアダプタの単なるいくつかである。
【００２２】
最後に、ここに提供されるアルゴリズム及びディスプレイは、何れか特定のコンピュータ又は他の装置に本来的に関連するものでない。各種の汎用システムが、ここでの教示によるプログラムにより利用されてもよいし、又は要求された方法のステップを実行するためより特化した装置を構成することが便利であるとわかるかもしれない。これら各種システムについて要求される構成は、以下の説明から明らかになるであろう。さらに、本発明の実施例は、特定のプログラミング言語を参照して説明される。各種プログラミング言語がここに説明されるような本発明の教示を実現するのに利用可能であることが理解されるであろう。
【００２３】
システム概略
図１は、アプリケーションを生成及び認証するシステム１００の実施例を示す。図１を参照して、本実施例のシステム１００は、複数の携帯計算装置１０２ａ〜１０２ｎ、ネットワーク１０４、プロセスオーガナイザ１０８、モジュールデベロッパ１３５、タスクパフォーマ１３９及びワークフローサーバ１０６を有する。
【００２４】
複数の携帯計算装置１０２ａ〜１０２ｎは、各自の接続１１２ａ〜１１２ｎを介しネットワーク１０４に無線接続される。携帯計算装置１０２は、ワークフローサーバ１０６に接続され、一実施例では、プロセスオーガナイザ１０８、タスクパフォーマ１３９及びモジュールデベロッパ１３５に接続される。携帯計算装置１０２ａ〜１０２ｎは、ディスプレイ、ストロークキャプチャ機能、オーディオキャプチャ機能、ジェスチャ認識機能及び無線通信機能を有する。携帯計算装置１０２ａ〜１０２ｎは、イメージ（ドキュメント又は書類など）を受信し、受信したイメージにストロークアノテーションを追加し、注釈付けされた受信したイメージを送信するよう構成される。携帯計算装置１０２ａ〜１０２ｎの実施例が、図２Ａを参照して以下でより詳細に説明される。
【００２５】
ネットワーク１０４は、従来タイプの有線又は無線であり、スターコンフィギュレーション、トークンリングコンフィギュレーション又は当業者に既知の他のコンフィギュレーションなどの何れかの個数のコンフィギュレーションを有してもよい。さらに、ネットワーク１０４は、複数の装置が通信可能なローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）（インターネットなど）及び／又は他の何れかの相互接続されたデータパスを有してもよい。さらなる実施例では、ネットワーク１０４はピア・ツー・ピアネットワークであってもよい。ネットワーク１０４はまた、各種の異なる通信プロトコルによりデータを送信するための通信ネットワークの部分に接続されるか、又は内蔵してもよい。さらなる他の実施例では、ネットワーク１０４は、ＳＭＳ（Ｓｈｏｒｔ  Ｍｅｓｓａｇｉｎｇ  Ｓｅｒｖｉｃｅ）、ＭＭＳ（Ｍｕｌｔｉｍｅｄｉａ  Ｍｅｓｓａｇｉｎｇ  Ｓｅｒｖｉｃｅ）、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、直接的なデータ接続、ＷＡＰ、電子メールなどを介しデータを送受信するため、Ｂｌｕｅｔｏｏｔｈ(登録商標)通信ネットワーク又はセルラ通信ネットワークを含む。
【００２６】
プロセスオーガナイザ１０８は、アプリケーションを生成し、信号ライン１１８を介しネットワーク１０４を利用して当該アプリケーションをワークフローサーバ１０６に送信する計算装置である。プロセスオーガナイザ１０８は、ワークフローサーバ１０６、モジュールデベロッパ１３５及びタスクパフォーマ１３９に接続され、一実施例では、携帯計算装置１０２に接続される。プロセスオーガナイザ１０８は、ワークフローサーバ１０６に登録及びアップロードされ、ワークフローサーバ１０６により運営されるオンラインマーケットプレースにおいて販売されるアプリケーションを生成する。他の実施例では、管理者（図示せず）は、ストアにアップロード及び販売されるカスタマイズされたアプリケーションをプロセスオーガナイザ１０８から要求する。
【００２７】
プロセスオーガナイザ１０８は、共同プロセスとしてアプリケーションを生成する。一実施例では、プロセスオーガナイザ１０８は、アプリケーションに搭載されるモジュールデベロッパ１３５からモジュールを購入する。他の実施例では、携帯計算装置１０２は、オンラインマーケットプレースを介しモジュールを購入する。モジュールデベロッパ１３５は、プロセスオーガナイザ１０８により開発されたアプリケーションに搭載されるモジュールを生成する計算装置である。モジュールデベロッパ１３５は、信号ライン１３７を介しネットワーク１０４を用いて通信する。モジュールデベロッパ１３５は、プロセスオーガナイザ１０８及びワークフローサーバ１０６に接続され、一実施例では、携帯計算装置１０２に接続される。
【００２８】
例えば、プロセスオーガナイザ１０８は、医療書類を生成するためのアプリケーションを生成する。医療書類は、医師のオフィスにおいて利用される。まず、患者は、スタイラスを利用して計算装置１０２に個人情報を入力する。ユーザ入力は手書きされる。この結果、アプリケーションは、手書きをテキストに変換するモジュールを有する。次に、医師は、書類のエンドに言葉により提供される自分のメモを添付する。この結果、アプリケーションは、音声をテキストに変換するモジュールを有する。最後に、医師のメモは、患者に対する処方箋を含む。処方箋が変換されると、アプリケーションは、処方箋を調合するため患者の薬局に処方箋を送信するモジュールを有する必要がある。
【００２９】
他の実施例では、プロセスオーガナイザ１０８は、購入用のアプリケーションを生成し、要求された各種タスクを実行するため、タスクパフォーマ１３９と同意を確立する。タスクパフォーマ１３９は、プロセスオーガナイザ１０８により開発されたアプリケーションのタスクを実行する計算装置である。タスクパフォーマ１３９は、信号ライン１４１を介しネットワーク１０４を利用して通信する。タスクパフォーマ１３９は、プロセスオーガナイザ１０８及びワークフローサーバ１０６に接続され、一実施例では、携帯計算装置１０２に接続される。
【００３０】
例えば、医療アプリケーションの具体例を利用して、プロセスオーガナイザ１０８は、ワークフローサーバ１０６により運営されるオンラインマーケットプレースを介し顧客にアプリケーションを販売する。顧客は、携帯計算装置１０２ａから変換対象の音声を有した書類をワークフローサーバ１０６に送信する。ワークフローサーバ１０６は、音声をタスクパフォーマ１３９に送信し、タスクパフォーマ１３９は、当該変換を完了させ、信号ライン１４１を介しワークフローサーバ１０６に変換結果を送信する。ワークフローサーバ１０６は、その後、完成した書類を携帯計算装置１０２ａに送り返す。
【００３１】
一実施例では、携帯計算装置１０２のユーザは、ワークフローサーバ１０６からアプリケーションを購入する。アプリケーションは、携帯計算装置１０２に表示されるドキュメントを生成する。他の実施例では、管理者（図示せず）は、携帯計算装置１０２に表示されるカスタマイズされたアプリケーションを生成するため、プロセスオーガナイザ１０８に依頼する。例えば、管理者は、配送会社を運営し、プロセスオーガナイザ１０８にパッケージの輸送及び配送を追跡するためのカスタマイズされたアプリケーションを生成するよう要求する。携帯計算装置１０２は、パッケージを配送する従業員により利用される。
【００３２】
ワークフローサーバ１０６は、携帯計算装置１０２ａ〜１０２ｎ、プロセスオーガナイザ１０８、モジュールデベロッパ１３５及びタスクパフォーマ１３９と通信するため、信号ライン１１６を介しネットワーク１０４に接続される。ワークフローサーバ１０６は、オンラインマーケットプレースモジュール２７０、ルーティングモジュール２７２及び登録モジュール２７５（図２Ｂを参照）を有する。ワークフローサーバ１０６は、携帯計算装置１０２ａ〜１０２ｎにアプリケーションを販売するためオンラインマーケットプレースモジュール２７０を維持し、一意的な識別子及びシークレット情報を生成する登録モジュール２７５を利用し、アプリケーション、モジュール及びドキュメントの真正性を検証し、それらをネットワーク１０４の計算装置にルーティングするルーティングモジュール２７２を利用する。ワークフローサーバ１０６は、図２Ａ、３Ａ及び４〜９を参照して以下でより詳細に説明される。
【００３３】
図１のシステムは１つのみのワークフローサーバ１０６しか示していないが、例えば、他のファンクション、企業、機関、組織構成に専用の何れかの個数の追加的なワークフローサーバがあってもよい。計算装置１０２ａ〜ｎは、複数のワークフローサーバ１０６と通信してもよい。ドキュメントの特定のページ又はセクションが、異なるワークフローサーバに関連付け可能である。また、複合的なドキュメントの一部が、複合的なドキュメント全体を送信する代わりに転送可能である。
【００３４】
計算装置２０２
図２Ａを参照して、計算装置２０２のコンポーネントが説明される。計算装置２０２は、表示装置２０６、ストロークキャプチャ装置及びモジュール２０８、入力装置２１０、出力装置２１５、プロセッサ３０２、メモリ３０４、通信ユニット３０６、一意的な装置ＩＤ３０８、クロック３１０、メタデータモジュール３１２、他の入出力（Ｉ／Ｏ）装置３２６、ログ処理モジュール３１４、アプリケーションモジュール３１８、プレゼンテーションモジュール２２２及び転送モジュール３１６を有する。一実施例では、計算装置２０２は、携帯計算装置１０２ａ〜ｎである。他の実施例では、計算装置２０２は、プロセスオーガナイザ１０８である。さらなる他の実施例では、計算装置２０２は、モジュールデベロッパ１３５である。他の実施例では、計算装置２０２はタスクパフォーマ１３９である。
【００３５】
プロセッサ３０２は、計算を実行し、表示装置２０６に電子表示信号を提供し、ストローク入力を検出及び処理する算術ロジックユニット、マイクロプロセッサ、汎用コントローラ又は他の何れかのプロセッサアレイを有する。プロセッサ３０２は、計算装置２０２のその他のコンポーネントと通信するため、バス２２０に接続される。プロセッサ３０２は、データ信号を処理し、ＣＩＳＣ（Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）アーキテクチャ、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）アーキテクチャ又は命令セットの組み合わせを実現するアーキテクチャを含む各種計算アーキテクチャを有してもよい。図３には単一のプロセッサしか示されていないが、複数のプロセッサが含まれてもよい。計算装置２０２の処理能力は、イメージの表示、記録したストローク及びストロークの送信をサポートすることに限定されてもよい。処理能力は、各種タイプの画像処理、ストローク処理又は認識タスクを含むより複雑なタスクを実行するのに十分なものであってもよい。他のプロセッサ、オペレーティングシステム、センサ、ディスプレイ及び物理的コンフィギュレーションが可能であることが当業者に明らかであろう。計算装置２０２はまた、限定することなく、ＷＩＮＤＯＷＳ（登録商標）、ＭａｃＯＳ  Ｘ、Ａｎｄｒｏｉｄ又はＵＮＩＸ（登録商標）ベースのオペレーティングシステムなど、プロセッサにより実行可能なオペレーティングシステムを含む。
【００３６】
メモリ３０４は、プロセッサ３０２により実行されてもよい命令及び／又はデータを格納する。命令及び／又はデータは、ここに説明される技術の何れか及び／又はすべてを実行するためのコードを有してもよい。メモリ３０４は、ＤＲＡＭデバイス、ＳＲＡＭデバイス、フラッシュメモリ又は当該分野で知られている他の何れかのメモリデバイスであってもよい。一実施例では、メモリ３０４はまた、より永続的にログ情報を格納するため、ハードディスクドライブやフラッシュドライブなどの不揮発性メモリを有する。メモリ３０４は、計算装置２０２のその他のコンポーネントと通信するため、バス２２０により接続される。
【００３７】
通信ユニット３０６は、アンテナ及びバス２２０に接続される。他の実施例では、通信ユニット３０６は、ネットワーク１０４との直接的な物理的接続のためのポートを備えてもよい。通信ユニット３０６は、複合的なドキュメントを送受信するための送受信機を有する。一実施例では、通信ユニット３０６は、アクセスポイントとの無線通信のためのＷｉＦｉ送受信機を有する。他の実施例では、通信ユニット３０６は、他の装置との無線通信のためのＢｌｕｅｔｏｏｔｈ（登録商標）送受信機を有する。さらなる他の実施例では、通信ユニット３０６は、ＳＭＳ、ＭＭＳ、ＨＴＴＰ、直接的なデータ接続、ＷＡＰ、電子メールなどを介しセルラ通信ネットワークによりデータを送受信するためのセルラ通信送受信機を有する。さらなる他の実施例では、通信ユニット３０６は、限定することなく、ＵＳＢ、ＳＤ又はＣＡＴ−５などの有線接続のためのポートを有する。通信ユニット３０６は、複数の処理システムを含みうるネットワーク１０４とプロセッサ３０２とをリンクさせる。処理システムのネットワークは、複数の装置が通信可能なローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）（インターネットなど）及び／又は他の何れかの相互接続されたデータパスを有してもよい。通信ユニット３０６はまた、当業者に理解されるように、ＴＣＰ／ＩＰ、ＨＴＴＰ、ＳＳＨ、ｇｉｔ  ＨＴＴＰＳ及びＳＭＴＰなどの標準的なネットワークプロトコルを利用して、ファイル（メディアオブジェクト）の配信のため、ネットワーク１０４との他の従来の接続を提供する。
【００３８】
計算装置２０２は、一意的な装置識別子３０８のストレージを有する。計算装置２０２は、必要に応じて、一意的な識別子を他のコンポーネントに提供するため、バス２２０に接続される。一実施例では、ストレージは、一意的な装置識別子３０８を格納するＲＯＭである。他の実施例では、一意的な装置識別子３０８は、パブリックキー−プライベートキーペアを格納する不揮発性ストレージである。他の実施例では、パブリックキー−プライベートキーペアは、当該装置のＣＰＵ又はメインボードに一体化された特殊な信頼された計算メモリ内に格納される。アプリケーションになされた変更が認証されたエンティティにより実行されたことを保証するため、ユーザの真正性を検証するのに利用される一意的な識別子を計算装置２０２が有することが有用である。
【００３９】
一実施例では、一意的な識別子は、計算装置２０２におけるネットワークチップのハードウェアＭＡＣアドレスである。一意的な識別子３０８は、通信ユニット３０６などの他の機能ブロックの内部にあってもよいし、又はメモリユニット３０４の不揮発性ストレージ内にあってもよい。他の実施例では、一意的な識別子は、計算装置２０２上のメモリカードに関連する一意的なＩＤであり、このようにして、ある装置との関連付けは、予想される動作でありうるメモリカードが移動されると、異なる装置に移ることになる。一意的な識別子は、各種処理について有用であるが、典型的には、大きなセキュリティを提供しない。例えば、ハードウェアＭＡＣアドレスは、他の装置により模倣可能である。従って、ＲＳＡ（登録商標）などのパブリックキー暗号化システムからのキーのペアに装置を関連付けすることが、価値があることがある。一実施例では、計算装置２０２は、配布されたプライベートキーとパブリックキーとを備えて製造又は構成される。このとき、計算装置２０２は、装置上で生じるストローク、イメージ、ログ又は他のメディアのデジタル署名のためにそれのプライベートキーを利用可能である。他の者は、パブリックキーを利用して当該メディアを検証してもよい。パブリックキーはまた、装置とのシークレット情報の通信を提供するよう利用されてもよい。暗号化のための装置のパブリックキーの利用は、特定の計算装置２０２のみを意図したページイメージ又はメタデータに他者のアクセスを制限することになる。
【００４０】
クロック３１０は、従来のタイプであり、計算装置２０２のローカルタイムの指示を提供する。特に、クロック３１０は、複合的なドキュメントが処理されるローカル時間を提供するのに利用される。この時間値はまた、ログ処理モジュール３１４を利用して、ローカルログにデータと共に格納される。クロック３１０は、システムバス２２０を利用して、当該情報をプロセッサ３０２及びログ処理モジュール３１４に通信するよう構成される。
【００４１】
アプリケーションモジュール３１８は、計算装置２０２がプロセスオーガナイザ１０８又はモジュールデベロッパ１３５であるかに依存して、アプリケーション又はモジュールを生成するためのルーチンを有するソフトウェアである。プロセスオーガナイザ１０８は、アプリケーションを生成するアプリケーションモジュール３１８を有する。モジュールデベロッパは、モジュールを生成するアプリケーションモジュール３１８を有する。一実施例では、アプリケーションモジュール３１８は、メモリ３０４に格納され、プロセッサ３０２によりアクセス可能であって実行可能である。
【００４２】
メタデータモジュール３１２は、ドキュメントからメタデータを抽出し、メタデータをドキュメントの一部として格納するためのルーチンを含むソフトウェアである。一実施例では、メタデータモジュール３１２は、ドキュメントメタデータと共にイメージ／ページメタデータの双方にアクセスするため、図７〜１０を参照して後述される機能を提供するため、プロセッサ３０２により実行可能な命令である。一実施例では、メタデータモジュール３１２は、メモリ３０４に格納され、プロセッサ３０２によりアクセス可能であって実行可能である。何れかのイベントでは、メタデータモジュール３１２は、計算装置２０２のプロセッサ３０２及び他のコンポーネントと連係して通信するよう構成される。
【００４３】
ログ処理モジュール３１４は、ローカルログを生成してメモリ３０４に、より詳細にはメモリ３０４の不揮発性記憶部分にローカルログを格納するためのルーチンを含むソフトウェアである。一実施例では、ログ処理モジュール３１４は、計算装置２０２及びワークフローサーバ１０６の関連するログにメタデータを格納するため、プロセッサ３０２により実行可能なルーチンのセットである。ログ処理モジュール３１４は、トランザクションにおいてワークフローの完了の検証を提供するのに特に重要である。一実施例では、ログ処理モジュール３１４はまた、ネットワーク上の公衆に利用可能な位置においてそれの特定の計算装置２０２のログを公開又は格納するためのルーチンを有する。ログ処理モジュール３１４は、バス２２０によってプロセッサ３０２、メモリ３０４及び通信ユニット３０６に接続される。以下の図３Ｃは、ログに格納されている情報のタイプの具体例を示す。
【００４４】
ログ処理モジュール３１４は、以前のログエントリの暗号化ハッシュを含む各ログエントリハッシュデータに関連する暗号化ハッシュを生成する。暗号化ハッシュの格納又は公開は、ログの以前のすべてのエントリに対するチェックサムを提供する。従って、公開されたハッシュが“信頼”されている場合、以前のすべてのログハッシュを再計算し、同一の最終的なハッシュが得られるか確認することが可能である。ログエントリを生成するためハッシュ処理されたデータの何れか又はログの何れかの部分に対する変更が検出可能である。このようなログ及びログエントリのハッシュ計算及び検証のフォーマット及び詳細は、それぞれが参照することによりその全体がここに援用される、２００５年１２月２９日に出願された米国特許第７，８４９，０５３号“Ｃｏｏｒｄｉｎａｔｉｏｎ  ａｎｄ  Ｔｒａｃｋｉｎｇ  ｏｆ  Ｗｏｒｋｆｌｏｗｓ”、２００８年１０月２日に出願された米国特許出願第１２／２４４，７１４号“Ｍｅｔｈｏｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｔａｍｐｅｒ  Ｐｒｏｏｆ  Ｃａｍｅｒａ  Ｌｏｇｓ”及び２００４年７月９日に出願された米国特許出願第１０／８８７，９９８号“Ｓｙｎｃｈｒｏｎｉｚｉｎｇ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｗｏｒｋ  Ｔｈｒｏｕｇｈ  Ｄｏｃｕｍｅｎｔ  Ｌｏｇｓ”に説明される。
【００４５】
暗号化ハッシュはまた、検証用に利用されることに加えてデータをインデックス処理するのに利用可能であるため、コンテンツベース識別子（ＣＢＩ）と呼ばれる。最も最近の暗号化ハッシュの刊行物は、それぞれが参照することによりその全体がここに援用される、２００８年１０月２日に出願された米国特許出願第１２／２２４，７０７号“Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｒｉｓｋ  Ａｎａｌｙｓｙｓ  ｏｆ  Ｅｎｔａｎｇｌｅｄ  Ｌｏｇｓ”及び２００８年１０月２日に出願された米国特許出願第１２／２４４，７２１号“Ｍｅｔｈｏｄ  ＆  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ａｕｔｏｍａｔｉｃａｌｌｙ  Ｐｕｂｌｉｓｈｉｎｇ  Ｃｏｎｔｅｎｔ  Ｂａｓｅｄ  Ｉｄｅｎｔｉｆｉｅｒｓ”に説明されるように、他の信頼されるログに対して、又は電子メールを介したものとすることが可能である。従って、暗号化ハッシュ又はＣＢＩを含むログが維持される。最近のログエントリのＣＢＩは、他のログファイルに格納され、電子メール又は他のプロトコルを介し公開される。これらのＣＢＩは、ＣＢＩが公開された時からログが変更されなかったことを検証するのに以降に利用可能である。
【００４６】
転送モジュール３１６は、ワークフローサーバ１０６との間でアプリケーション、モジュール及びドキュメントを送受信するためのソフトウェア及びルーチンである。一実施例では、転送モジュール３１６は、オンラインマーケットプレースにおける表示用のアプリケーション又はモジュールをワークフローサーバ１０６に送信する。他の実施例では、転送モジュール３１６は、限定することなく、コンピュータ１０８、ワークフローサーバ１０６又は他の携帯計算装置１０２などの他の何れかの計算装置からフォーマット化されたメッセージとしてドキュメントを送受信する。転送モジュール３１６は、プロセッサ３０２及び通信ユニット３０６との通信のため、バス２２０により接続される。転送モジュール３１６は、電子メール、ファイル転送、ＸＭＰＰ又は特定用途アプリケーションなどによって、計算装置２０２からアプリケーション、モジュール、ドキュメント又はフォーマット化されたメッセージを送受信するためのものである。
【００４７】
表示装置２０６と揃えられて、デジタル化タブレット又はグラフィックスパッドなどのストロークキャプチャ装置２０８がある。ストロークキャプチャ装置２０８は、ディスプレイの上下又は周辺にありうる受信機を備えた接触検知装置、超音波、電磁気若しくは光検知装置である。ストロークキャプチャ装置２０８は、スタイラス２０４、指又は他の実装からストローク又は動作を受け付けることが可能である。ストロークキャプチャ装置２０８は、スタイラス２０４のためのセンサであり、認識可能な手書き、印刷及び他の描画をキャプチャするのに十分な解像度を有する。一実施例では、表示装置２０６には、接触反応透過パネルが表示装置２０６の画面をカバーするタッチ画面が備えられる。一実施例では、ストロークキャプチャ装置２０８は、Ｗａｃｏｍ  Ｃｏ．，Ｌｔｄ．により製造販売されているデジタル化装置である。他の実施例では、ストロークキャプチャ装置２０８は、１つの接触点の水平方向及び垂直方向のポジションを返すシンプルなセンサである。さらなる他の実施例では、ストロークキャプチャ装置２０８は、スタイラス上のボタンが押下された場合、又はイレースなどのスタイラスが反転された場合、圧力、位置、時間の表示及びスタイラス２０４のＩＤ番号、タイプ若しくは表示を返す複数のより複雑なセンサである。いくつかのセンサは、複数の接触点を返してもよい。いくつかのセンサは、スタイラスベースの接触入力と指ベースの接触入力とを区別することが可能であってもよい。ストロークキャプチャ装置２０８は、ストロークキャプチャモジュール２０８の一部であるか、又はストロークキャプチャモジュール２０８と通信するよう構成される。
【００４８】
バス２２０は、計算装置２０２を介し情報及びデータを通信するための共有バスを表す。バス２２０は、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）又は同様の機能を提供するため当該分野において知られている他のいくつかのバスを含む１以上のバスを表すものであってもよい。システムバス２２０を介しプロセッサ３０２に接続されるさらなるコンポーネントは、表示装置２０６、ストロークキャプチャ装置及びモジュール２０８、入力装置２１０、出力装置２１５、プロセッサ３０２、メモリ３０４、通信ユニット３０６、一意的装置識別子ストレージ３０８、クロック３１０、メタデータモジュール３１２、ログ処理モジュール３１４、転送モジュール３１６、アプリケーションモジュール３１８、プレゼンテーションモジュール２２２及びその他のアプリケーション３２４を有する。また、機能的要素の間の最も効率的な通信を提供するよう設計された計算システム２０２における複数のバスがあってもよい。
【００４９】
プレゼンテーションモジュール２２２は、表示装置２０６上にドキュメントを表示し、入力装置２１０からの入力に応答して画像の表示を調整するためのソフトウェア及びルーチンである。プレゼンテーションモジュール２２２は、図５〜９を参照して後述されるデュアルモードユーザインタフェースを表示させるルーチンを実行する。一実施例では、プレゼンテーションモジュール２２２は、表示装置２０６上に画像を表示させるためプロセッサ３０２により実行可能なシンクライアントルーチンである。プレゼンテーションモジュール２２２は、バス２２０により表示装置２０６、プロセッサ３０２及びメモリ３０４に接続される。
【００５０】
その他のアプリケーションは、他の各種タイプの機能のため、プロセッサ３０２により実行可能な他のソフトウェア及びルーチンを含む。一実施例では、限定することなく、ワードプロセッシングアプリケーション、電子メールアプリケーション、財務アプリケーション及びウェブブラウザアプリケーションを含む１以上のアプリケーションプログラムが、プロセッサ３０２により実行される。
【００５１】
最後に、計算装置２０２は、１以上の他のＩ／Ｏデバイス３２６を有してもよい。例えば、他のＩ／Ｏデバイス３２６は、音声を生成するためのスピーカー、音声を記録するためのマイクロフォン、ドキュメント、画像若しくはビデオを記録するためのスキャナ若しくはカメラ、及び加速度計、ページャモータ又は触覚フィードバックなどの他のセンサ若しくはフィードバック装置を含むものであってもよい。任意的には、その他のＩ／Ｏデバイス３２６は、音声処理を実現するための１以上のアナログ・デジタルコンバータ若しくはデジタル・アナログコンバータ、及び／又は１以上のデジタル信号プロセッサを含むものであってもよい。これら他のＩ／Ｏデバイス３２６は、バス２２０によってプロセッサ３０２及びメモリ３０４との通信のため接続される。任意的には、マイクロコントローラが、パワーシステム制御を実現し、低速な重要度の低いタスクからメインプロセッサ３０２をオフロードするため、他のＩ／Ｏデバイス３２６の一部として追加されてもよい。
【００５２】
ワークフローサーバ１０６
図２Ｂを参照して、ワークフローサーバ１０６の実施例がより詳細に説明される。ワークフローサーバ１０６は、プロセッサ２９１、メモリ２９０、通信ユニット２９３、オンラインマーケットプレースモジュール２７０、クロック２９４、ルーチングモジュール２７２、プレゼンテーションモジュール２９５、登録モジュール２７５、他の入出力装置２９６、他のアプリケーション２９７、ログ処理モジュール２９８、転送モジュール２９９及びデータストレージ２６０を有する。他の実施例では、ワークフローサーバ１０６はさらに、表示装置２７９、出力装置２８０、一意的装置ＩＤ２９２及び入力装置２８１を有する。
【００５３】
当業者は、ワークフローサーバ１０６のコンポーネントの一部が計算装置２０２のコンポーネントと同一又は類似の機能を有することを認識しており、このため、これらのコンポーネントの説明はここでは繰り返されない。例えば、プロセッサ２９１、メモリ２９０、通信ユニット２９３、転送モジュール２９９、ログ処理モジュール２９８、クロック２９４、他のアプリケーション２９７、表示装置２７９、出力装置２８０、一意的装置ＩＤ２９２及び入力装置２８１は、図２Ａのプロセッサ３０２、メモリ３０４、通信ユニット３０６、転送モジュール３１６、ログ処理モジュール３１４、クロック３１０、他のＩ／Ｏデバイス３２６、表示装置２０６、出力装置２１５、一意的装置ＩＤ３０８及び入力装置２１０とそれぞれ類似した機能を有する。
【００５４】
ワークフローサーバ１０６と計算装置２０２とのコンポーネントの間の相違が以下に説明される。例えば、通信ユニット２９３は、無線の代わりに有線によりワークフローサーバ１０６とネットワーク１０４とを接続してもよい。プロセッサ２９１は、ワークフローサーバ１０６が多数の携帯計算装置１０２にサービスを提供する可能性があるため、プロセッサ３０２より計算的に強力なものである。転送モジュール２９９は、電子メールクライアントに対するような電子メールサーバである。表示装置２７９はＣＲＴ（Ｃａｔｈｏｄｅ−Ｒａｙ  Ｔｕｂｅ）であってもよく、出力装置２８０はスピーカーセットである。入力装置２８１は、キーボード及びマウスタイプコントローラを含む。当業者は、ワークフローサーバ１０６のコンポーネントがリモートクライアントに対するハードウェアサーバとして機能するとき、他の各種装置がありうることを認識するであろう。
【００５５】
ログ処理モジュール２９８は、異なる計算装置から送信されるログからグローバルログを生成する。グローバルログは、異なる計算装置において行われたすべての動作の中央ログである。グローバルログは、個々のログからのハッシュを含むが、各トランザクション中に具体的に行われたことに関する詳細は含まない。具体的なアクションは、アプリケーション、ドキュメント又はモジュールに関連するメタデータを抽出することによって再生成可能である。
【００５６】
登録モジュール２７５は、オンラインマーケットプレースモジュール２７０にアップロードするため、識別子を生成し、アプリケーション及びモジュールを構成するためのソフトウェア及びルーチンである。一実施例では、登録モジュール２７５は、図６〜８を参照して後述されるような識別子及び秘密鍵を生成するため、プロセッサ２９４により実行可能なルーチンである。アプリケーション又はモジュールは、アップロードのためオンラインマーケットプレースモジュール２７０に登録及び送信される。登録モジュール２７５は、バス３２０によってプロセッサ２９１、メモリ２９０及びオンラインマーケットプレースモジュール２７０に接続される。
【００５７】
ルーチングモジュール２７２は、アプリケーション、モジュール又はドキュメントと共に受信されたメタデータを抽出し、データストレージ２６０からシークレット情報を抽出し、シグネチャを生成し、当該シグネチャとアプリケーション、モジュール又はドキュメントのメタデータと比較し、当該比較がデータのコンフリクトを生じさせた場合にはエラーを生成し、シグネチャがアプリケーション、モジュール又はドキュメントのメタデータに一致した場合、アプリケーションをそれの宛先にルーティングするためのソフトウェア及びルーチンである。一実施例では、ルーチングモジュール２７２は、メタデータに規定された宛先間の比較をし、当該比較が許容される場合、アプリケーション、モジュール又はドキュメントを宛先にルーティングするため、プロセッサ２９１により実行可能なルーチンである。比較ステップの何れかがデータのコンフリクトを生じさせる場合、エラーメッセージが送信される。ルーティングモジュール２７２は、バス３２０によってプロセッサ２９１及びメモリ２９０に接続される。
【００５８】
オンラインマーケットプレースモジュール２７０は、アプリケーション、モジュール及びドキュメントをオンラインストアにアップロードし、購入用にアプリケーション、モジュール及びドキュメントを提示し、当該購入アプリケーションをユーザに課金し、ルーティングするとアプリケーションの生成することに関係するエンティティにクレジットを配布するためのソフトウェア及びルーチンである。一実施例では、オンラインマーケットプレースモジュール２７０は、アプリケーションの最初の購入と追加的なサービスのための以降の料金とについてユーザに月単位固定料金又はサービス毎に課金するため、プロセッサ２９１により実行可能なルーチンである。オンラインマーケットプレースモジュール２７０は、プロセッサ２９１、メモリ２９０、登録モジュール２７５及びルーチングモジュール２７２に接続される。
【００５９】
一実施例では、データストレージ２６０は、ワークフローサーバ１０６の一部である。他の実施例では、データストレージ２６０は、ワークフローサーバ１０６に接続される。例えば、このような他の実施例では、データストレージ２６０は、Ａｍａｚｏｎ  Ｓ３などのオンラインストレージサービスである。データストレージ２６０は、不揮発性メモリ装置又は同様の永続的記憶装置及び媒体である。データストレージ装置２６０は、プロセッサ２９１のためデータ及び命令を格納し、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ  ＲＯＭ装置、ＤＶＤ  ＲＯＭ装置、ＤＶＤ  ＲＡＭ装置、ＤＶＤ  ＲＷ装置、フラッシュメモリ装置又は当該分野において知られている他の何れかのマスストレージ装置を含む１以上の装置を有する。データストレージ２６０は、アプリケーションと、ハッシュ、識別子、秘密鍵、シグネチャなどを含む関連するメタデータとを格納するのに利用される。データストレージ２６０の構成は、図３Ａ及び３Ｂを参照して以下においてより詳細に説明される。
【００６０】
登録モジュール２７５
図３Ａは、登録モジュール２７５の一実施例を示す。一実施例では、登録モジュール２７５は、それぞれがバス３２０に接続される、入出力モジュール３０７、識別情報（ＩＤ）生成ユニット３１０、アプリケーション生成ユニット３２２及びモジュール生成ユニット３４４を有する。アプリケーション又は装置の登録中、Ｉ／Ｏモジュール３０７は、異なる識別子に対するリクエストを受信し、当該リクエストをＩＤ生成ユニット３１０に送信する。
【００６１】
アプリケーション、ドキュメント及びモジュールの間の相違を理解するのを支援するため、図３Ｂは、アプリケーション３４６のグラフィカル表現を示す。アプリケーション３４６は、ドキュメント３４８を生成するためのソフトウェア及びルーチンを含むものであってもよく、又はドキュメントは、当該アプリケーションに関連する他のツールにより生成されたものであってもよい。アプリケーション３４６は、タスクを実行するための異なるモジュールを含むことが可能であるか、又はモジュールは、別々に購入可能である。
【００６２】
ドキュメント３４８は、ページ３５０ａ，３５０ｂ，３５０ｃ，．．．，３５０ｎを有する。一実施例では、ユーザは、アプリケーション３４６を購入し、ドキュメント３４８を生成し、ページ３５０ａ〜ｎを記入するための情報を提供する。アプリケーション３４６が特定の機能を欠落している場合、ドキュメント３４８は、タスクを実行するためオンラインマーケットプレースモジュール２７０上で利用可能とされる異なるタスクパフォーマ１３９に送信される。プロセスオーガナイザ１０８は、典型的には、タスクを完了させるため、異なるタスクパフォーマ１３９にドキュメント３４８を送信するため、アグリーメントとメタデータとを設定するためのものである。しかしながら、当業者は、オンラインマーケットプレースモジュール２７０を介しタスクパフォーマ１３９から追加的なサービスを顧客が購入するなど、他のビジネスモデルが利用可能であることを認識するであろう。課金のためのフォーマット及び詳細は、参照することによりその全体がここに援用される、２００９年９月８日に出願された米国出願第１２／５５５，６８６号“Ｍｕｌｔｉ−Ｐｒｏｖｉｄｅｒ  Ｆｏｒｍｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍ  ｗｉｔｈ  Ｒｅｔｒｙ  ｕｐｏｎ  Ｆａｉｌｕｒｅ”に説明される。
【００６３】
図３Ａに戻って、ＩＤ生成ユニット３１０は、識別子を生成し、当該識別子をデータストレージ２６０に格納するためのソフトウェア及びルーチンを含む。ＩＤ生成ユニット３１０は、バス３２０によってプロセッサ２９１、メモリ２９０及びデータストレージ２６０に接続される。ＩＤ生成ユニット３１０は、登録されている何れかのアプリケーション又はモジュールについてグローバルに一意的な識別子（ＧＵＩＤ）を生成する。ＧＵＩＤは、アプリケーションが登録される毎に更新され、これにより、ＧＵＩＤは、アプリケーション又はモジュールのバージョンに固有のものとなる。従って、ＩＤ生成ユニット３１０は、アプリケーションバージョンＧＵＩＤを生成することになる。
【００６４】
ＩＤ生成ユニット３１０はまた、登録されている何れかのアプリケーション又はモジュールについてシークレット情報を生成する。一実施例では、当該シークレット情報は、パブリック／プライベートキーの組み合わせにおけるプライベートキーである。当該シークレット情報は、ワークフローサーバ１０６及びプロセスオーガナイザ１０８又はモジュールデベロッパ１３５に知られている。ワークフローサーバ１０６は、シークレット情報をデータストレージ２６０に格納し、当該シークレット情報が他のパーティにより傍受されないことを保証するため、最初の送信後はシークレット情報を送信しない。
【００６５】
ＩＤ生成ユニット３１０はまた、アプリケーション、モジュール又はドキュメントに対して変更を行った何れかのエンティティについて、携帯計算装置１０２及びユーザＩＤ３５４などの登録されている何れかの装置に対する一意的な装置ＩＤ３５１を生成する。一意的な装置ＩＤ３５１は、携帯計算装置１０２に対してユーザにより変更されたドキュメントが認証された装置上で変更されていることを保証する。ユーザＩＤ３５４は、アプリケーション、モジュール又はドキュメントに関する何れかの問題のソースをより容易に特定するため変更がなされた計算装置をトラッキングするのに利用される。一実施例では、ＩＤ生成ユニット３１０がユーザＩＤ３５４を生成した後、ＩＤ生成ユニット３１０は、ユーザがホームアドレス、クレジットカード情報、課金アドレスなどを含むアカウントを確定することを要求し、これにより、ユーザは、アプリケーション、モジュール又はドキュメントの購入又は販売後に適切に課金されることになる。この情報は、データストレージ２６０に格納され、ユーザのプライバシを保護するため暗号化される。
【００６６】
ログ処理モジュール３１４，２９８はまた、他の情報をメタデータとして保存する。図３Ｃは、アプリケーション、ドキュメント又はモジュールと関連して保存されるメタデータ３７０の一例を示す。本例では、一意的装置ＩＤ３５１は、携帯計算装置１０２などの計算装置２０２を特定する。アプリケーション又はモジュールバージョンＧＵＩＤ３５２は、利用されるアプリケーションの識別子である。ユーザＩＤ３５４は、アプリケーション、ドキュメント又はモジュールのユーザを特定する。価格３５６は、購入されたアプリケーション、実行される以降の何れかのアクションの価格などの価格を含む。トランザクションステップＩＤ３５８は、何れのトランザクションがすでに実行されたか、また何れのトランザクションが維持されているかトラッキングするため、ワークフローサーバ１０６により利用される。トランザクションが完了する毎に、新たなＩＤはトランザクションステップＩＤ３５８に追加される。
【００６７】
結果データ３６０のハッシュは、最も最近に実行されたアクションのハッシュである。一実施襟では、結果データ３６０のハッシュは、ローリングハッシュである。ローリングハッシュは、以前のハッシュと新たなハッシュとのハッシュである。ハッシュオフセット３６２は、以前のログエントリのハッシュ値と最も最近のハッシュとの間の相違である。以前のログエントリのハッシュ値を計算するための情報を含めることによって、当該情報は、以降に利用可能であり、他の関連するログエントリと比較することによって検証のため調べることができる。
【００６８】
アプリケーション生成ユニット３２２は、登録されたアプリケーションをオンラインマーケットプレースモジュール２７０に送信するためのソフトウェア及びルーチンである。アプリケーション生成ユニット３２２は、プロセスオーガナイザ１０８からアプリケーションと、ＩＤ生成ユニット３１０から識別子とを受信する。アプリケーション生成ユニット３２２は、識別子及びアプリケーションをオンラインマーケットプレースモジュール２７０に適したフォーマットにフォーマット化し、フォーマット化された識別子とアプリケーションとをオンラインマーケットプレースモジュール２７０に送信する。アプリケーション生成ユニット３２２は、バス３２０によってプロセッサ２９１及びメモリ２９０に接続される。
【００６９】
モジュール生成ユニット３４４は、登録されたモジュールをオンラインマーケットプレースモジュール２７０に送信するためのソフトウェア及びルーチンである。モジュール生成ユニット３４４は、モジュールデベロッパ１３５からモジュールと、ＩＤ生成ユニット３１０から識別子とを受信する。モジュール生成ユニット３４４は、識別子とアプリケーションとをオンラインマーケットプレースモジュール２７０に適したフォーマットにフォーマット化し、フォーマット化された識別子とモジュールとをオンラインマーケットプレースモジュール２７０に送信する。モジュール生成ユニット３４４は、バス３２０によってプロセッサ２９１とメモリ２９０とに接続される。
【００７０】
ルーティングモジュール２７２
図４に戻って、一実施例では、ルーティングモジュール２７２は、プロセッサ２９１、メモリ２９０、オンラインマーケットプレースモジュール２７０及びＩ／Ｏモジュール４０７のための通信ユニット２９３と通信するためバス３２０に接続されるＩ／Ｏモジュール４０７、コントローラ４０３、抽出エンジン４１０、比較ユニット４２２及びエラーハンドリングモジュール４２９を有する。
【００７１】
Ｉ／Ｏモジュール４０７は、アプリケーション、モジュール及びドキュメントをそれらの宛先に送受信するためのソフトウェア及びルーチンである。Ｉ／Ｏモジュール４０７は、電子メール、ファイル転送、ＸＭＰＰ又は特定用途アプリケーションなどによって、プロセスオーガナイザ１０８、携帯計算装置１０２及びモジュールデベロッパ１３５から、各自のメタデータ３７０を含むアプリケーション、モジュール及びドキュメントを受信し、それをコントローラ４０３に送信する。検証処理が完了すると、コントローラ４０３は、アプリケーション、モジュール又はドキュメントをトランザクションステップＩＤ３５８により指定されるような携帯計算装置１０２、プロセスオーガナイザ１０８、モジュールデベロッパ１３５又はタスクパフォーマ１３９に送信するＩ／Ｏモジュール４０７に通信ユニット２９３を介しアプリケーション、モジュール又はドキュメントを送信する。
【００７２】
コントローラ４０３は、アプリケーション、モジュール又はドキュメントの検証処理を制御するためのソフトウェア及びルーチンである。一実施例では、コントローラ４０３は、Ｉ／Ｏモジュール４０７、抽出エンジン４１０、比較ユニット４２２及びエラーハンドリングモジュール４２９の間のルーティングを制御することによって、アプリケーション、モジュール又はドキュメントの検証を実行するため、プロセッサ２９１により実行可能なルーチンである。コントローラ４０３はまた、トランザクションステップＩＤ３５８を抽出し、ルーティング処理において次のステップを特定することによって、アプリケーション、モジュール又はドキュメントをどこにルーティングすべきか決定する。
【００７３】
比較ユニット４２２がアプリケーション、モジュール又はドキュメントが真正であることを検証すると、コントローラ４０３は、トランザクションステップＩＤ３５８などに基づき、ドキュメント自体の内部に格納されているメタデータ３７０に基づき、当該ドキュメントの次の宛先を決定する。トランザクションステップＩＤ３５８は、ドキュメントの追加的な処理、ドキュメントがどのようにルーティングされるべきか、及びルーティングの宛先を指定する。例えば、メタデータとして格納される電子メールアドレスの順序付けされた系列は、ドキュメントが連続する各電子メールアドレスにわたされるワークフローの一例である。
【００７４】
抽出エンジン４１０は、メタデータ３７０を受信し、メタデータ３７０からアプリケーション／モジュールバージョンＧＵＩＤ３５２、結果データ３６０のハッシュ及びハッシュオフセットを抽出する。抽出エンジン４１０はまた、データストレージ２６０からアプリケーション又はモジュールシークレット情報を抽出する。抽出エンジン４１０は、その後、シグネチャを生成するため、アプリケーション／モジュールバージョンＧＵＩＤ３５２、結果データ３６０のハッシュ、ハッシュオフセット３６２及びシークレット情報をハッシュ処理する。シグネチャは、比較ユニット４２２に送信される。
【００７５】
ブランクドキュメントが生成されるか、又はドキュメント、アプリケーション若しくはモジュールが変更されると、抽出エンジン４１０は、シグネチャを生成する。ブランクドキュメントについて、シグネチャは、アプリケーションシークレット情報、ローリングハッシュ及びハッシュオフセットの署名付きハッシュである。ワークフローサーバ１０６にアップロード及び変更されたアプリケーション、ドキュメント又はモジュールについて、シグネチャは、ローリングハッシュ、ハッシュオフセット、アプリケーションバージョンＧＵＩＤ３５２及びアプリケーションシークレット情報を有する。シグネチャハッシュは、アプリケーション、ドキュメント又はモジュールに関連するメタデータ３７０に結果データ３６０のハッシュとして保存され、ログに戻され、ローリングハッシュを生成するためログ処理モジュール３１４により利用される。アプリケーションシークレット情報がハッシュ処理され、当該ハッシュは一般に不可逆的であるため、シークレット情報はワークフローサーバ１０６及びプロセスオーガナイザ１０８又はモジュールデベロッパ１３５によってしか知られない。
【００７６】
比較ユニット４２２は、整合性を確認するため、アプリケーション、モジュール又はドキュメントのシグネチャとアプリケーション、モジュール又はドキュメントのメタデータ３７０とを比較するためのソフトウェア及びルーチンである。これらのハッシュが整合しない場合、コントローラ４０３は、エラーハンドリングモジュール４２９にエラーメッセージを生成するよう指示する。情報が整合している場合、比較ユニット４２２は、宛先と次にトランザクションステップＩＤ３５８によって指定される次の宛先とを比較する。情報がコンフリクトしている場合、エラーハンドリングモジュール４２９は、エラーメッセージを生成する。比較ユニット４２２はまた、送信元のユーザがアプリケーションに対するアクセス権限を有し続けるかテストしてもよく、有しない場合、エラーハンドリングモジュール４２９は、エラーメッセージを生成する。情報が整合している場合、Ｉ／Ｏモジュール４０７は、それの次の宛先にアプリケーション、モジュール又はドキュメントを送信する。
【００７７】
エラーハンドリングモジュール４２９は、シグネチャとアプリケーション、モジュール又はドキュメントのメタデータとの間の不整合を携帯計算装置１０２、プロセスオーガナイザ１０８、モジュールデベロッパ１３５又はタスクパフォーマ１３９に通知するため、コントローラ４０３から命令を受信するためのソフトウェア及びルーチンである。一実施例では、エラーハンドリングモジュール４２９は、最後の計算装置についてアプリケーション、モジュール又はドキュメントをワークフローサーバ１０６に送信するための通知を生成する。他の実施例では、エラーハンドリングモジュール４２９は、他の通知と共に又は代わりに、意図した宛先の携帯計算装置１０２、プロセスオーガナイザ１０８、モジュールデベロッパ１３５又はタスクパフォーマ１３９について通知を生成する。エラーハンドリングモジュール４２９は、トランザクションステップＩＤ３５８から情報を抽出することによって、どこに通知を送信すべきか決定する。
【００７８】
オンラインマーケットプレースモジュール２７０
図５は、バス３２０によってプロセッサ２９１、メモリ２９０及びＩ／Ｏモジュール５０７について通信ユニット２９３と通信するため接続されるＩ／Ｏモジュール５０７、課金モジュール５１０、プレゼンテーションモジュール５２２及び検証モジュール５２９を有するオンラインマーケットプレースモジュール２７０の一実施例である。
【００７９】
課金モジュール５１０は、完了されたトランザクションの処理のため要求元のパーティに課金するため、プロセッサ２９１により実行可能なソフトウェア及びルーチンである。トランザクションは、アプリケーションの購入、モジュールの購入、タスクの実行、アプリケーション及び／又はモジュールのセットの購入などを含む。一実施例では、課金モジュール５１０は、認証された要求元のパーティ、関連する携帯計算装置１０２、識別番号、課金アドレス、支払タイプ及びデータ並びに他のセキュリティ及び課金情報のリストを含む。課金モジュール５１０はまた、プロセスオーガナイザ１０８、タスクパフォーマ１３９及びモジュールデベロッパ１３５について類似するタイプの情報を含む。課金モジュール５１０は、要求元のパーティに請求書を送信するか、又はクレジットカードに自動的に課金する。
【００８０】
紙と同様の処理における各ステップは、トランザクションとみなされる。一実施例では、価格が交渉され、プロセスオーガナイザ１０８、タスクパフォーマ１３９、モジュールデベロッパ１３５及びワークフローサーバ１０６により設定されている。各トランザクションは、ステップを実行するための価格、タスクパフォーマ１３９及び／又はモジュールデベロッパ１３５に提供された当該価格の一部、及びワークフローサーバ１０６が保持する当該価格の一部を含む。
【００８１】
他の実施例では、課金モジュール５１０は、ネットワーク上で利用可能なサービスプロバイダの個数、トランザクションを実行可能なサービスプロバイダの個数、これがトランザクションにおける最初の試みであるか、トランザクションに要求されるＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）及び他の各種ファクタに基づき、特定のトランザクションについて価格を動的に決定する。このような実施例では、課金モジュール５１０は、最低価格によりトランザクションを完了させるため、マーケットメーカーと同様に機能する。
【００８２】
課金モジュール５１０は、トランザクションの状態を決定するため、ルーティングモジュール２７２に接続される。トランザクションが処理されると、課金モジュール５１０は、要求元のパーティ及びトランザクションステップを実行したエンティティ（プロセスオーガナイザ１０８、タスクパフォーマ１３９又はモジュールデベロッパ１３５）に関する情報と、当該処理に関する他の情報とを蓄積する。課金モジュール５１０は、その後、エンティティ及び要求元のパーティのそれぞれのクレジット又はデビットの記述を生成する。
【００８３】
一実施例では、課金モジュール５１０は、多数のトランザクションの情報を累積し、アプリケーション、モジュール又はドキュメントに関するトランザクション系列全体が完了するまで、要求元パーティには課金しない。このような実施例は、課金モジュール５１０とルーティングモジュール２７２との間の連係及び通信を要求し、これにより、課金モジュール５１０は、何れのトランザクションが何れのドキュメントの処理に関連し、当該ドキュメントのすべての処理（トランザクション）が完了したときとを知ることになる。
【００８４】
他の実施例では、課金モジュール５１０はまた、取消又はクレジットを生成及び処理する。このような取消又はクレジットは、ログの監査、顧客の不満、特定されたエラー若しくは訂正、又はトランザクションが良好に、完全に又は適切に実行されなかったことの検出などに応答して、要求元のパーティが課金されたずっと後に生成可能である。当業者は、電子課金、資産移転、クレジットカード処理などを含む従来の各種課金機能が、課金モジュール５１０により実現可能であることを理解するであろう。
【００８５】
他の実施例では、課金モジュール５１０は、トランザクションを表す課金コードのリスト又はスケジュールを維持する。各課金コードは、提供及び／又は完了させるべきサービスを特定するため、トランザクションステップＩＤ３５８に関連して利用可能である。一実施例では、課金コードは、サービスを実行するための関連するパラメータと共に予め交渉された価格と、エンティティとワークフローサーバ１０６との間の価格の割当てとを有する。当業者は、このような課金コードがバルクディスカウント又は特別なプライベートな価格決定の同意などの追加的な情報を含むものであってもよいことを認識するであろう。さらなる他の実施例では、課金モジュール５１０は、マーケット状態及び他のプライベートな合意と整合する課金スケジュールの更新及び編集を可能にするため、プロセッサ２９１及び通信ユニット２９３と連係する。
【００８６】
プレゼンテーションモジュール５２２は、購入用のアプリケーション、モジュール及びドキュメントをオンラインマーケットプレースモジュール２７０において表示するためのソフトウェア及びルーチンである。プレゼンテーションモジュール５２２は、レーティングシステム、分類システム、アプリケーションを検出するためのサーチバーなどと共に、アプリケーション、モジュール及びドキュメントを表示するためのユーザインタフェースを生成する。一実施例では、プレゼンテーションモジュール５２２は、医師のオフィスの医療アプリケーションなどの汎用アプリケーションと、スミス先生の医療アプリケーションなどのカスタマイズされたアプリケーションとの双方を表示する。
【００８７】
カスタマイズされたアプリケーションは、すべての人が閲覧し、スミス先生のみが購入するため表示可能である。カスタマイズされたアプリケーション、モジュール又はドキュメントをすべての人に表示する効果は、カスタマイズされたアプリケーションを作成するエンティティの能力を示すということである。不利益は、顧客が自分のカスタマイズされたアプリケーション、モジュール又はドキュメントを他のユーザに表示したくないかもしれないということである。従って、一実施例では、カスタマイズされたアプリケーション、モジュール又はドキュメントは、ユーザが同意した後に始めてすべての人に表示される。
【００８８】
他の実施例では、カスタマイズされたアプリケーション、モジュール及びドキュメントは、特定のユーザのみに表示される。各ユーザには一意的なＩＤ３５４が割り当てられているため、ユーザの一意的なＩＤ３５４に従って、アプリケーション、モジュール及びドキュメントが表示される。プレゼンテーションモジュール５２２はまた、ユーザに固有の処理済みのアプリケーション、モジュール及びドキュメントを表示する。例えば、医師は、患者の書類に音声記録を添付し、音声からテキストへの変換のためドキュメントを送信する。当該処理は、タスクパフォーマ１３９により実行される。タスクパフォーマ１３９が処理を完了すると、ドキュメントは、医師がダウンロードするためオンラインマーケットプレースモジュール２７０にアップロード、認証及び表示される。これは、加えて又は代わりにユーザに処理済みのドキュメントを直接送信することが可能である。
【００８９】
検証モジュール５２９は、オンラインマーケットプレースのためアプリケーション、モジュール及びドキュメントを検証するためのソフトウェア及びモジュールを有する。一実施例では、検証モジュール５２９は、比較ユニット４２２について上述されたものに類似した認証ステップを実行する。他の実施例では、検証モジュール５２９は、計算装置１０２、プロセスオーガナイザ１０８、タスクパフォーマ１３９又はモジュールデベロッパ１３５のユーザからの不満や低いレーティングを受信することに応答して、アプリケーション、モジュール及びドキュメントをフラグ付けする。
【００９０】
方法
図６Ａ〜９を参照して、本発明の実施例の方法がより詳細に説明される。
【００９１】
図６Ａは、本発明の実施例による顧客、アプリケーション及びモジュールを登録するための方法の一実施例を示す。当該処理は、携帯計算装置１０２、プロセスオーガナイザ１０８、タスクパフォーマ１３９又はモジュールデベロッパ１３５が登録モジュール２７５による登録を開始する（６０２）ことにより開始される。一実施例では、オンラインマーケットプレース２７０は、ユーザを登録するためのログイン画面を有するユーザインタフェースを生成する。一実施例では、ユーザインタフェースは、ブラウザに表示される。ログイン画面が表示されると、それは、パスワード及び／又はユーザ名のエントリと選択可能なボタンとのフィールドを含む。ユーザは、要録された情報を提供し、携帯計算装置１０２にユーザ名及び／又はパスワードを入力するためのボタンを選択する。登録モジュール２７５は、ユーザのユーザＩＤを生成する（６０４）。ユーザＩＤはユーザに一意的なものであり、例えば、ユーザ名及びパスワードを設定するなどによって確定される。
【００９２】
登録モジュール２７５は、ユーザが顧客又はエンティティであるか判断する。顧客は、携帯計算装置１０２のユーザである。ユーザが顧客であると判断したことに応答して、登録モジュール２７５は、携帯計算装置について一意的な装置ＩＤを生成する（６０６）。一実施例では、一意的な装置ＩＤは、ユーザＩＤに関連付けされる。これは、一意的な装置ＩＤが一意的な装置ＩＤの番号の欠落により他の装置のために再利用された場合、特に重要である。
【００９３】
エンティティは、アプリケーションを生成するプロセスオーガナイザ１０８と、モジュールを生成するモジュールデベロッパ１３５とを有する。ユーザがエンティティである判断したことに応答して、登録モジュール２７５は、アプリケーション／モジュールバージョンのグローバルに一意的な識別子（ＧＵＩＤ）３５２を生成する（６０８）。ＧＵＩＤは、アプリケーション又はモジュールと関連付けされ、アプリケーション又はモジュールのバージョン番号を含む。バージョン番号は、アプリケーション又はモジュールの異なるバージョンに行われた変更を追跡するため、ルーティングモジュール２７２により利用される。バージョン番号は、価格決定構成を追跡するため、オンラインマーケットプレース２７０により利用される。例えば、ユーザがバージョン１〜２にアップグレードすることを所望する場合、バージョン２は追加的な機能を提供するため、アップグレードに関するコストがあるかもしれない。プロセスオーガナイザ１０８又はモジュールデベロッパ１３５は、アプリケーション又はモジュールバージョンＧＵＩＤ３５２をアプリケーションメタデータとして格納する（６１０）。
【００９４】
登録モジュール２７５は、アプリケーション又はモジュールについてシークレット情報を生成し（６１２）、当該シークレット情報をプロセスオーガナイザ１０８又はモジュールデベロッパ１３５に送信する。一実施例では、シークレット情報は、パブリック／プライベートキーペアのプライベート部分である。シークレット情報は、プロセスオーガナイザ１０８又はモジュールデベロッパ１３５及び登録モジュール２７５によってのみ知られる。これは、未認証のエンティティがアプリケーション及びモジュールを傍受し、認証されていない変更を行う能力を低下させる。一実施例では、プロセスオーガナイザ１０８又はモジュールデベロッパ１３５はシークレット情報を格納するが、未認証のエンティティがメタデータを解読することを回避するためメタデータとしては格納しない。他の実施例では、シークレット情報は、登録モジュール２７５内で生成され、プロセスオーガナイザ１０８又はモジュールデベロッパ１３５には開示されないが、代わりに検証モジュール５２９に利用可能とされる。
【００９５】
ＧＵＩＤ及びシークレット情報が生成されると、アプリケーション又はモジュールは確定され、アプリケーション又はモジュールとメタデータとが、オンラインマーケットプレース２７０にアップロードされる（６１４）。オンラインマーケットプレース２７０は、プロセスオーガナイザ１０８又はモジュールデベロッパ１３５は支払構成を指定するよう要求する（６１６）。支払構成は、アプリケーションを購入するための価格３５６と、追加的なサービスのための以降の料金とを含む。例えば、医師のオフィスの書類の上記具体例では、顧客はまず書類を購入し、変換サービスのため追加的な金銭を支払うことを選択できる。追加的なサービスは、月単位の課金又はサービス毎に課金される。登録処理が終了すると、オンラインマーケットプレース２７０は、販売用にアプリケーション又はモジュールを表示する（６１８）。
【００９６】
一実施例では、モジュールは、個別のタスクを実行するため顧客により購入される。他の実施例では、モジュールは、プロセスオーガナイザ１０８のアプリケーションに含めるため、プロセスオーガナイザ１０８により購入される。図６Ｂは、モジュールをアプリケーションに内蔵し、アプリケーションを登録モジュール２７５により再登録するためのステップを示す。さらなる他の実施例では、プロセスオーガナイザ１０８は、タスクパフォーマ１３９からタスクを購入する。これらのステップは、図６Ｃに示される。
【００９７】
図６Ｂを参照して、プロセスオーガナイザ１０８は、オンラインマーケットプレース２７０からモジュールを購入する（６２０）。プロセスオーガナイザ１０８は、モジュールをアプリケーションに含める（６２２）。プロセスオーガナイザ１０８は、アプリケーションをワークフローサーバ１０６にアップロードすることによって、アプリケーションを再登録するか、又はアプリケーションをアップロードする前に新たなアプリケーションのバージョンのＧＵＩＤを要求する。登録モジュール２７５は、新たなアプリケーションのバージョンのＧＵＩＤ６２４を生成し、これをプロセスオーガナイザ１０８に送信する。オンラインマーケットプレース２７０は、例えば、収入の何れのパーセンテージがモジュールを供給するためモジュールデベロッパ１３５に属するかなどを指定することによって、ユーザが支払構成を更新することを要求する（６２６）。ルーティングモジュール２７２は、アプリケーションに対する変更が承認されたことを保証するため、更新されたアプリケーションを認証する（６２８）。認証ステップは、図７〜９を参照して以下に詳細に説明される。オンラインマーケットプレース２７０は、更新されたアプリケーションを表示する（６３０）。顧客が更新されたアプリケーションを購入すると、オンラインマーケットプレース２７０は、更新されたアプリケーションの購入を受信する（６３２）。オンラインマーケットプレース２７０は、更新された支払構成に従って、プロセスオーガナイザ１０８及びモジュールデベロッパ１３５にクレジットを配布する。
【００９８】
図６Ｃは、タスクパフォーマ１３９からタスクを購入するためのステップを示す。プロセスオーガナイザ１０８は、タスクパフォーマ１３９からタスクを購入し（６３６）、オンラインマーケットプレース２７０がアプリケーションに関する支払構成を更新できるように（６３８）、オンラインマーケットプレース２７０に情報を送信する。一実施例では、更新されたアプリケーションは、このときにワークフローサーバ１０６にアップロードされる。他の実施例では、更新されたアプリケーションは、再登録後にアップロードされる。登録モジュール２７５は、新たなアプリケーションバージョンＧＵＩＤ３５２を生成する（６４０）。ルーティングモジュール２７２は、図７〜９を参照して説明される処理を利用して、更新されたアプリケーションを認証する（６４２）。オンラインマーケットプレース２７０は、更新されたアプリケーションを表示する（６４４）。顧客が更新されたアプリケーションを購入すると、オンラインマーケットプレース２７０は、更新されたアプリケーションの購入を受信し（６４６）、プロセスオーガナイザ１０８とタスクパフォーマ１３９とにクレジットを配布する（６４８）。一実施例では、タスクパフォーマ１３９のみが、実行されている合意されたタスクが完了すると、クレジットを受信する。
【００９９】
図７を参照して、フロー図７００は、アプリケーションについてアプリケーションシグネチャを取得する処理を示す。プロセスオーガナイザ１０８は、ワークフローサーバ１０６上でブランクドキュメントを生成する（７０２）。ルーティングモジュール２７２は、データストレージ２６０からシークレット情報を抽出し（７０４）、メタデータを抽出し、当該ハッシュがシークレット情報、ローリングドキュメントハッシュ及びハッシュオフセットを合成したアプリケーションシグネチャファイル署名付きハッシュを生成する（７０６）。登録モジュール２７５は、アプリケーションと共にメタデータとしてアプリケーションシグネチャを格納する（７０８）。
【０１００】
図８は、ドキュメントが変更された後にシグネチャを生成するステップを示すフロー図８００である。ユーザは、ドキュメントを変更する（８０２）。例えば、顧客は書式に情報を入力し、プロセスオーガナイザ１０８はドキュメントに対して変更を行い、あるいは、タスクパフォーマ１３９はタスクを実行することによってドキュメントを変更する。ドキュメントに対して変更を行ったユーザは、ドキュメントをワークフローサーバ１０６に送信する（８０４）。ルーティングモジュール２７２は、ローリングハッシュ、ローリングハッシュオフセット、アプリケーションバージョンＧＵＩＤ３５２及びシークレット情報を合成したドキュメントシグネチャを生成する（８０６）。当該ドキュメントシグネチャは、アプリケーションバージョンＧＵＩＤ３５２を有しているため、アプリケーションシグネチャと異なる。ルーティングモジュール２７２は、修正されたドキュメント共に、メタデータとしてドキュメントシグネチャ、アプリケーションバージョンＧＵＩＤ３５２、ハッシュ及びハッシュオフセットを格納する。ドキュメント及びメタデータは、ログ処理モジュール３１４がシグネチャをローリングハッシュに変換する計算装置２０２に送信される。
【０１０１】
図９を参照して、アプリケーション、モジュール又はドキュメントをルーティングするフロー図９００が示される。ワークフローサーバ１０６は、アプリケーション、モジュール又はドキュメントを受信する（９０２）。ルーティングモジュール２７２は、メタデータとシークレット情報とを抽出し（９０４）、ドキュメントについてハッシュを計算する。メタデータは、図３Ｃに示される情報を含む。具体的には、メタデータは、一意的装置ＩＤ３５１、アプリケーションバージョンＧＵＩＤ３５２、ユーザＩＤ３５４、価格３５６、トランザクションステップＩＤ３５８、結果データのハッシュ３６０及びハッシュオフセット３６２を含む。ルーティングモジュール２７２は、シグネチャとメタデータ、シグネチャ及び計算されたハッシュとを比較する（９０６）。
【０１０２】
ルーティングモジュール２７２は、比較により問題があるか判断する。データが整合していない場合、ルーティングモジュール２７２は、エラーメッセージを送信する（９０８）。エラーメッセージは、データをアップロードしたユーザ、ドキュメントを次に受信するユーザ又はこれらの双方に送信される。データが整合している場合、ルーティングモジュール２７２は、当該宛先とメタデータに指定された宛先とを比較する（９１０）。当該比較は、宛先がリストにあり、送信元のユーザが送信時にアクセス可能であることを保証するため、許容される宛先のリストをチェックすることを含む。当該比較に問題がある場合、ルーティングモジュール２７２は、エラーメッセージを送信する（９０８）。当該比較が許容される場合、ルーティングモジュール２７２は、アプリケーションを当該宛先にルーティングする（９１２）。
【０１０３】
本発明の実施例の上記説明は、例示及び説明のために与えられたものである。それは、本発明の実施例を開示された正確な文言に限定し、又は網羅的であることを意図したものでない。上記教示に基づき、多数の変更及び変形が可能である。本発明の実施例の範囲は当該詳細な説明により限定されるのでなく、本出願の請求項によって限定されることが意図される。当業者に理解されるように、本発明の実施例は、それの趣旨又は本質的な特性から逸脱することなく、他の具体的なドキュメントにより実現されてもよい。同様に、モジュール、ルーチン、特徴、属性、方法及び他の態様の特定の名称及び分割は必須又は重要なく、本発明の実施例又はその特徴を実現する機構は、異なる名前、分割及び／又はドキュメントを有してもよい。さらに、当業者に明らかなように、本発明の実施例のモジュール、ルーチン、特徴、属性、方法及び他の態様は、ソフトウェア、ハードウェア、ファームウェア又はこれら３つの何れかの組み合わせとして実現可能である。また、本発明の実施例のコンポーネントと、その具体例であるモジュールとがソフトウェアとして実現される場合、コンポーネントは、スタンドアローンプログラムとして、より大きなプログラムの一部として、複数の別々のプログラムとして、静的若しくは動的にリンクされたライブラリとして、カーネルロード可能なモジュールとして、デバイスドライバとして、及び／又はコンピュータプログラミングの当業者に現在若しくは将来的に知られるすべての及び他の何れかの方法により実現可能である。さらに、本発明の実施例は、何れか特定のプログラミング言語による、又は何れか特定のオペレーティングシステム又は環境の実現形態に限定されるものでない。従って、本発明の実施例の開示は、以下の請求項に与えられる本発明の実施例の範囲について限定的でなく例示的なものであると意図される。
【０１０４】
本出願は、参照することによりその内容のすべてがここに含まれる、米国特許商標庁により２０１１年２月３日に出願された米国優先権出願第１３／０２０６４３に基づく。
【図１】
0005971254.tif 000002
【図２Ａ】
0005971254.tif 000003
【図２Ｂ】
0005971254.tif 000004
【図３Ａ】
0005971254.tif 000005
【図３Ｂ】
0005971254.tif 000006
【図３Ｃ】
0005971254.tif 000007
【図４】
0005971254.tif 000008
【図５】
0005971254.tif 000009
【図６Ａ】
0005971254.tif 000010
【図６Ｂ】
0005971254.tif 000011
【図６Ｃ】
0005971254.tif 000012
【図７】
0005971254.tif 000013
【図８】
0005971254.tif 000014
【図９】
0005971254.tif 000015