(57)【要約】  市場のカタログに配置するための製品の検証は、分散承認ワークフローを利用する。検証エンジンは、市場のカタログに含めるために、製品の提出を受ける。検証エンジンは、製品を検証するために必要なタスクを実行するために備えられた１つ又は複数の承認エンジンに対して分散承認ワークフローを開始する。検証エンジンは、完了するまで、承認エンジンによって実行される分散承認ワークフローを監視する。分散承認ワークフローが正常に完了すると、製品を流通のために市場のカタログ上に配置することができる。
2015524131.tif 000002
【特許請求の範囲】
【請求項１】
コンピューターにより実施される方法であって、
ユーザーへの配布のために提供される製品のカタログを提供するステップと、
検証エンジンにおいて、カタログにおける第１の製品を含む提出要求を受け取るステップと、
前記検証エンジンから、少なくとも第１の承認エンジンに対して第１の承認ワークフローを開始するステップであって、前記第１の承認エンジンは前記検証エンジンとは異なり、前記第１の承認ワークフローは、第１の所定の仕様に適合する前記製品を検証する１つ又は複数のタスクを有する、ステップと、
前記検証エンジンにおいて、完了ステータスを受け取るステップと、
成功した完了ステータスを受け取ると、前記カタログに前記製品をリストアップするステップと
を含む方法。
【請求項２】
前記第１の承認ワークフローについての完了の推定時間を前記第１の承認エンジンから受け取るステップ
をさらに含む請求項１に記載のコンピューターにより実施される方法。
【請求項３】
前記完了の推定時間が経過した後、前記第１の承認ワークフローの完了について前記第１の承認エンジンを監視するステップ
をさらに含む請求項２に記載のコンピューターにより実施される方法。
【請求項４】
前記検証エンジンから、前記製品についての第２の承認ワークフローを第２の承認エンジンに分配するステップであって、前記第２の承認ワークフローは、第２の所定の仕様に適合する前記製品を検証する１つ又は複数のタスクを実行する、ステップ（ステップ１、２０５Ｎ）
をさらに含む請求項１に記載のコンピューターにより実施される方法。
【請求項５】
前記カタログに前記製品をリストアップする前に、前記第２の承認エンジンからの成功した完了ステータスを待つステップ（ステップ４、２０５Ｎ）
をさらに含む請求項４に記載のコンピューターにより実施される方法。
【請求項６】
複数の市場であって、各市場は市場のユーザーに配布するための複数の製品を含むカタログを有し、各市場は複数の承認エンジンに通信可能に結合される検証エンジンを有し、前記検証エンジンは検証のために製品を含む提出パッケージを受け取るように構成され、前記検証エンジンは、前記製品についての分散された承認ワークフローを少なくとも１つの承認エンジンに対して開始し、各承認エンジンによって提供される更新を介して前記分散された承認ワークフローの状態を監視し、前記分散された承認ワークフローの成功ステータスの際にカタログに含めるために前記製品を検証するように構成される、複数の市場
を備えるシステム。
【請求項７】
前記検証エンジンは、前記製品についての分散された承認ワークフローを開始する前に、前記提出パッケージの予備的なチェックを実行するようにさらに構成される請求項６に記載のシステム。
【請求項８】
前記検証エンジンは、各承認エンジンから更新を受け取り、前記更新に応答して各承認エンジンに応答を送るように構成される請求項６に記載のシステム。
【請求項９】
前記検証エンジンは、複数の分散された承認ワークフローを複数の承認エンジンに対して平行して開始するように構成される請求項６に記載のシステム。
【請求項１０】
前記検証エンジンは、同一の提出パッケージについての分散された承認ワークフローのうちの２つ以上の承認ワークフローを複数の承認エンジンに対して開始するように構成される請求項６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散承認ワークフローをサポートするインフラストラクチャーに関する。
【背景技術】
【０００２】
[0001]電子商取引市場は、ベンダーが商品やサービスを販売し、消費者が商品やサービスを購入するための流通の中心を提供する。市場は、多くの場合、消費者に配布するための製品のカタログを有する。市場は、自分の製品を独立して流通させる手段を有していないベンダーにとって有益である。ベンダーは、市場を通じて流通させるために市場に製品を提出する（提示する、submit）ことができる。市場がベンダーの製品をリストアップする前に、市場は、製品が信頼できるものであり、満足のいくように機能するものであり、一定の要件を満たすものであることを確実にするために、製品及び／又はベンダーを検証してもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、販売の中心点からの異なる種類の製品を検証するプロセスは、検証プロセスがかなりの時間と費用を要する場合、技術的な課題となり得る。
【課題を解決するための手段】
【０００４】
[0002]この概要は、詳細な説明で以下にさらに説明される概念の選択を簡略化された形で紹介するために提供される。この概要は、特許請求される主題の主要な特徴又は不可欠な特徴を特定することを意図するものではなく、特許請求された主題の範囲を限定するために使用されることも意図していない。
【０００５】
[0003]電子商取引システムは、製品について広告をしたり流通させたりするために、いくつかの市場（マーケットプレース）を利用する。各市場は、市場による流通のために提供される製品をリストアップするカタログを有する。各市場は、市場のカタログ上にリストアップするベンダーの製品を受け取ることができる。ベンダーから提出された製品は、市場のカタログにリストアップされる前に検証される。
【０００６】
[0004]市場は、製品の提出を受け取り、製品を検証するために、分散承認ワークフロー（分散型の承認ワークフロー、distributed approval workflow）を策定するために検証エンジンを利用することができる。分散承認ワークフローは、１つ又は複数のサーバーにおいて実行することができるいくつかの異なる承認エンジンによって実行されてもよい。各承認エンジンは特定のタスクを実行する。分散承認ワークフローは、製品が宣伝されているとおりに信頼性が高く意図されるようにして機能することを検証する。検証エンジンは、完了するまで、分散承認ワークフローに関わっている各承認エンジンの進行を監視する。
【０００７】
[0005]これら及び他の特徴及び利点は、以下の詳細な説明を読み、関連する図面を検討することから明らかになるであろう。前述の一般的な説明及び以下の詳細な説明は、ともに、説明のためのものに過ぎず、特許請求される態様を限定するものではないことを理解すべきである。
【図面の簡単な説明】
【０００８】
【図１】[0006]１つ又は複数の市場を利用する例示的な電子商取引システムを示す。
【図２】[0007]例示的な分散承認ワークフローを示す。
【図３】[0008]例示的な市場の第１の実施例を示すブロック図である。
【図４】[0009]例示的な市場の第２の実施例を示すブロック図である。
【図５】[0010]分散承認ワークフロープロセスを示すフロー図である。
【図６】[0011]検証エンジンの第１の例示的な方法を示すフロー図である。
【図７】[0012]検証エンジンの第２の例示的な方法を示すフロー図である。
【図８】[0013]承認エンジンの例示的な方法を示すフロー図である。
【図９】[0014]動作環境を示すブロック図である。
【図１０】[0015]例示的な提出検証サーバーの第１の実施例を示すブロック図である。
【図１１】[0016]例示的な提出検証サーバーの第２の実施例を示すブロック図である。
【図１２】[0017]例示的な承認サーバーを示すブロック図である。
【発明を実施するための形態】
【０００９】
[0018]様々な実施例は、分散承認ワークフローをサポートするインフラストラクチャーに関連する。分散承認ワークフローは、製品及び／又はそれに関連付けられるコンテンツを検証するために使用することができる。１つ又は複数の実施例において、製品が検証されると、製品は、いくつかのマーケットを含み得る電子商取引システムにおいて流通させることができる。各市場は、特定のタイプの製品を流通させるように構成することができる。
【００１０】
[0019]市場は、製品の提出を受け取り、検証プロセスを開始して監視する検証エンジンを含む。検証プロセスは異なる種類の製品について異なっていてもよい。検証プロセスは、１つ又は複数の承認エンジンによって実行することができる分散承認ワークフローに分散される。分散承認ワークフローは、製品が所定の仕様に従っていることを検証するために実行することができる１つ又は複数の承認ワークフローを含む。
【００１１】
[0020]検証エンジンは、完了するまで、各承認エンジンによって実行される承認ワークフローを管理する。失敗に至らずに完了すると、製品は市場のカタログに掲載することができる。検証が失敗した場合には、報告がベンダーに戻されてもよく、製品は市場のカタログに掲載されない。
【００１２】
[0021]１つ又は複数の実施例において、市場はソフトウェアアプリケーションを配信するように構成することができる。しかし、本明細書に記載される技術は、特定のタイプの製品に制限されず、限定されないが、デジタルビデオファイル、デジタルオーディオファイル、テキストファイル、イメージ、及びそれらの任意の組み合わせなどの任意のタイプのデジタルデータに適用することができる。
【００１３】
[0022]ここで例示的な電子商取引システムの説明に注意を向ける。図１を参照すると、システム１００は、１人又は複数のユーザー１０６及び１つ又は複数のベンダー１０８に通信フレームワーク１０４を介して接続され得る１つ又は複数の市場１０２Ａ−１０２Ｎ（集合的に、「１０２」）を含むことができる。市場１０２は、１つ又は複数の製品１１２Ａ−１１２Ｂ（集合的に、「１１２」）のリストを含むカタログ１１０を含んでもよい。１つ又は複数の実施例において、各市場１０２は、特定のタイプ又はカテゴリーのアプリケーションを配信するように構成することができる。例えば、ある市場が携帯電話アプリケーションを配信するために使用することができる一方で、別の市場はビデオゲームを配信する。しかしながら、実施例は、特定の分類の製品提供に制限されず、他の構成を特定の実施例のために使用することができる。
【００１４】
[0023]１人又は複数のユーザー１０６は、コンピューティングデバイスを介して、ユーザー１０６に配信されるべき製品１１４についての要求を開始することができる。１つ又は複数のベンダー１０８は、コンピューティングデバイスを介して、ベンダーの製品がその市場１０２から流通されるように、製品提出要求１１６を市場１０２に送ることができる。通信フレームワーク１０４は、市場１０２、ユーザー１０６、及びベンダー１０８の間の通信を容易にし、図９に関して以下でより詳細に説明される。
【００１５】
[0024]図１に示すシステム１００は、特定の構成において限定された数の要素を有しているが、システム１００が代替の構成においてより多くの又は少ない要素を含むことができることを理解すべきである。システム１００は、書籍、論文、文学作品、及び他のそのようなコンテンツなどのテキストファイルを配信する、出版システムなどの保存位置（リポジトリー、repository）として構成されてもよい。システム１００は、検証後に製品をさらに配布又は保持することなく製品を検証するように構成することができる。システム１００は、複数のカタログを有する単一の市場として又は１つもしくは複数のカタログを共有する複数の市場として構成されてもよい。実施例はこのように制約される。
【００１６】
[0025]図２は、携帯電話アプリケーション１２２についての例示的な分散承認ワークフロー１３６を示す。市場１０２は、携帯電話アプリケーション１２２を市場のカタログにリストアップする前に、当該携帯電話アプリケーション１２２を検証することができる（ブロック１２４）。携帯電話アプリケーション１２２のための検証プロセスは、以下を含む５つの承認ワークフローを含み得る分散承認ワークフロー１３６からなってもよい：（１）携帯電話アプリケーションのＷｉＦｉ機能を検証する（ブロック１２６）；（２）携帯電話アプリケーションの冒涜するような言葉遣いについてのドキュメンテーションを検証する（ブロック１２８）；（３）携帯電話アプリケーションのバイナリーが正しいデジタル署名を有することを検証する（ブロック１３０）；（４）携帯電話アプリケーションが実行時に使用するメモリーの量が所定の制限内にあることを検証する（ブロック１３２）；（５）市場のカタログにおける携帯電話アプリケーションを販売するために使用されるアイコンが市場の要件に従っていることを検証する（ブロック１３４）。
【００１７】
[0026]図３は、市場１４０の例示的な構成の第１の実施例を示す。市場１４０はいくつかのコンピューティングデバイスから構成することができる。１つ又は複数の実施例において、市場１４０は、（「２０２」として示される）一群の提出検証サーバー、１つ又は複数の承認サーバー２０４Ａ−２０４Ｎ（集合的に、「２０４」）、及び／又は又はファイルサーバー２０６などの、いくつかのサーバーから構成することができる、提出検証サーバー２０２は、１つ又は複数のベンダー１０８から製品提出要求１１６を受け取ることができる検証エンジン２０３を含んでもよい。製品提出要求１１６は提出パッケージ２０８の形をとることができる。検証エンジン２０３は、提出パッケージ２０８を検証するためのワークフローを、各々がそれぞれの承認エンジン２０５を有する１つ又は複数の承認サーバー２０４に分散させることができる。検証エンジン２０３は、完了するまで、承認エンジン２０５によって実行される承認ワークフローを監視する。
【００１８】
[0027]承認エンジン２０５は、あるの所定の仕様への準拠についてアプリケーションを検証すること、アプリケーションが広告されているように機能すること、アプリケーションが他のコンポーネントと干渉しないこと、アプリケーションが確実に実行されることなどを検証することができ、これらはすべて、本明細書において、所定の仕様への適合についてアプリケーションを検証するものとして考慮される。ファイルサーバー２０６は、提出パッケージ２０８のコンテンツが様々なサーバーによってアクセスされ得るように、提出パッケージ２０８を格納するために使用することができる。
【００１９】
[0028]１つ又は複数の実施例において、製品提示要求１１６は、ベンダープロファイル２１０、１つ又は複数のアプリケーションバイナリーファイル２１２、アプリケーションアセット２１４及び／又はアプリケーションメタデータ２１６を含むことができる提出パッケージ２０８の形をとってもよい。ベンダープロファイル２１０は、名前、住所、事業の種類などのベンダーに関する情報を含むことができる。アプリケーションバイナリーファイル２１２はアプリケーションの実行可能命令を含む。アプリケーションアセット２１４は、市場１０２においてアプリケーションを広告するために使用することができる、アイコン、ウェブページ、スクリーンショット、ロゴ、ドキュメント、および他のタイプのデータを含んでもよい。アプリケーションメタデータ２１６は、アプリケーションのタイトル、説明、アプリケーションを実行するために必要なハードウェア及び／又はソフトウェアコンポーネントのリストなどを含んでもよい。実施例はこの特定の構成の提出パッケージ２０８に制約されず、提出パッケージ２０８は図３に示されるものより多くの又は少ないコンテンツを有していてもよいことに留意すべきである。
【００２０】
[0029]提出検証サーバー２０２は、検証エンジン２０３及び１つ又は複数の承認キュー（待ち行列）２３０Ａ−２３０Ｎ（集合的に、「２３０」）を含んでもよい。検証エンジン２０３は、提出パッケージ２０８を受け取り（ブロック２１８）、提出パッケージ２０８のコンテンツに対していくつかの予備のチェックを実行してもよい（ブロック２２０）。例えば、検証エンジン２０３は、マルウェアを検出するためにウイルススキャンを実行したり、提出パッケージ２０８が提出要件に準拠するために必要なすべてのコンテンツを含むことをチェックしたり、提出パッケージ２０８のコンテンツがいかなる攻撃的なマテリアルも含まないことをチェックしたりすることなどができる。
【００２１】
[0030]提出パッケージ２０８のコンテンツが予備チェックに合格すると、提出パッケージ２０８が格納されてもよい（ブロック２２２）。１つ又は複数の実施例において、ファイルサーバー２０６は、市場１０２内の様々なコンポーネントによってアクセス可能な記憶位置に提出パッケージ２０８を格納するために利用することができる。加えて、検証エンジン２０３は、提出パッケージ２０８に関連付けられるメタデータを承認キュー２３０へと格納することができる（ブロック２２４）。
【００２２】
[0031]検証エンジン２０３は、分散された承認ワークフローを１つ又は複数の承認サーバー２０４へ配布するために、１つ又は複数の承認キュー２３０を利用することができる。１つ又は複数の実施例では、特定の承認キューと特定の承認サーバー２０４との間に関連付けがあってもよい。例えば、承認サーバー２０４は、アプリケーションの種類によって分類することができる。アプリケーションの種類の例は、携帯電話アプリケーション、ビデオゲームアプリケーション、デバイスドライバー、電子メールアプリケーションなどであってもよい。携帯電話アプリケーションの検証に関連付けられる専用の承認サーバー２０４、ビデオゲームアプリケーションの検証に関連付けられる専用の承認サーバー２０４、特定のオペレーティングシステムで実行するデバイスドライバーの検証に関連付けられる専用の承認サーバー２０４などがあってもよい。他の実施例では、承認サーバー２０４は、特定のタイプのアプリケーションに特有のものでなくてもよい。検証エンジン２０３は、負荷分散ポリシー又は他のポリシーに従ってアプリケーションを検証するために承認サーバー２０４のいずれかを利用することができる。
【００２３】
[0032]承認キュー２３０におけるエントリーは、特定の提出パッケージ２０８に関連付けられるメタデータを含む。メタデータは、提出パッケージ、アプリケーションを実行するのに必要なさらなるハードウェアリソース又はソフトウェアリソース（例えば、ＧＰＳデバイス、加速度計など）の位置を含んでもよい。承認エンジン２０５は、提出パッケージ２０８について対応する承認キュー２３０をポーリングする（ブロック２３２）。あるいは、検証エンジン２０３は、承認エンジン２０５に対して承認要求をプッシュしてもよい（ブロック２３２）。承認エンジン２０５は、アプリケーションについて必要な検証を実行する（ブロック２３４）。承認エンジン２０５は、検証プロセスのステータスについての更新を検証エンジン２３０に提供することによって、検証エンジン２０３とインタラクトする（ブロック２３６）。
【００２４】
[0033]検証は、結果として成功、失敗、又は中断することがある。検証が成功すると、市場１４０内のカタログにアプリケーションをリストアップすることが可能となる。検証が失敗すると、提出を市場１４０にリストアップすることができない理由を示すエラー応答がベンダーに返されてもよい。いくつかの例では、検証エンジン２０３は、承認エンジン２０５によって実行される承認ワークフローを中断して停止させてもよい。このような中断は、承認ワークフローが以前のバージョンに対して開始された後にアプリケーションの更新バージョンが受け取られたときに生じてもよい。
【００２５】
[0034]提出検証サーバー２０２、承認サーバー２０４、及びファイルサーバー２０６は、任意の通信プロトコルに従って動作することができる、ネットワーク、バス、チャネルなどの通信フレームワーク２３８を介して接続することができる。通信フレームワーク２３８は、市場１４０における異なるサーバー間の通信を容易にする。１つ又は複数の実施例において、提出検証サーバー２０２及び承認サーバー２０４は、同一のエンティティ（例えば、会社、グループなど）によって操作されてもよい。他の実施例では、提出検証サーバー２０２は１つのエンティティによって操作されてもよく、１つ又は複数の承認サーバー２０４は、提出検証サーバー２０２とは異なるエンティティによって操作されてもよい。
【００２６】
[0035]図３に示される市場１４０は特定の構成において制限された数の要素を有するが、市場１４０は所与の実施形態について望ましいものとなるよう、代替のトポロジーにおいてより多くの又はより少ない要素を含んでもよいことが理解されるであろう。例えば、複数の承認エンジン２０５が単一の承認サーバー２０４上で一緒にグループ化されてもよい。
【００２７】
[0036]図４は市場２４０の第２の実施例を示す。図４に示される市場２４０は特定の構成において制限された数の要素を有するが、市場２４０が、所与の実施形態について所望されるように、代替のトポロジーにおいてより多くの又はより少ない要素を含んでもよいことが理解されよう。
【００２８】
[0037]第２の実施例において、提出検証サーバー２４２は、検証エンジン２０３、承認エンジン２０５、及び承認キュー２３０を含む。検証エンジン２０３は、提出パッケージ２０８を受け取り（ブロック２１８）、提出パッケージ２０８のコンテンツに対していくつかの予備のチェックを実行してもよい（ブロック２２０）。
【００２９】
[0038]提出パッケージ２０８のコンテンツが予備チェックに合格すると、提出パッケージ２０８はストレージユニット２４４に格納されてもよい（ブロック２２２）。提出パッケージ２０８のエントリーは承認キュー２３０に配置することができる（ブロック２２４）。承認エンジン２０５は、提出パッケージ２０８について対応する承認キュー２３０をポーリングすることができる（ブロック２３２）。あるいは、検証エンジン２０３は、承認エンジン２０５へと承認要求をプッシュすることができる（ブロック２３２）。承認エンジン２０５はアプリケーションのために必要な検証を実行する（ブロック２３４）。承認エンジン２０５は、検証プロセスのステータスについての更新を検証エンジン２０３に提供することによって、検証エンジン２０３とインタラクトする（ブロック２３６）。
【００３０】
[0039]ここで、様々な例示的な方法を参照してさらに説明することができる実施例についての動作に注意を向ける。代表的な方法は、他の方法で指定されない限り、必ずしも、提示された順序やなんらかの特定の順序で実行される必要がないことが理解されよう。さらに、方法に関して説明される様々なアクティビティは、連続的なもしくは並列した方法で、又は連続的な動作及び並列動作の組み合わせで実行することができる。方法は、所与の組の設計及び性能の制約について所望されるように、説明される実施例又は代替的な実施例の１つもしくは複数のハードウェア要素及び／又はソフトウェア要素を用いて実施することができる。例えば、方法は、論理デバイス（例えば、汎用又は特定目的のコンピューター）による実行のためのロジック（例えば、コンピュータープログラム命令）として実施することができる。
【００３１】
[0040]図５は、分散承認ワークフロープロセスの流れを示す。図５に示すように、検証エンジン２０３は、各々の分散承認ワークフローを複数の承認エンジン２０５Ａ−２０５Ｎに分散することによって、いくつかの提出パッケージ２０８の検証を同時に開始して監視することができる。
【００３２】
[0041]検証エンジン２０３は、検証を必要とする提出パッケージ２０８を特定の承認エンジン２０５に通知するために、１つ又は複数の承認キュー２３０を利用してもよい。特定の承認エンジン２０５に関連付けられる１つ又は複数の承認キュー２３０があってもよい。例えば、携帯電話アプリケーションは、特定のオペレーティングシステムの技術仕様に加えて、特定のセルラー無線技術仕様に関して検証する必要があるかもしれない。このアプリケーションの検証は、２つの別個の承認エンジン２０５による検証を要することがある。セルラー無線要件に関してアプリケーションを検証する１つの承認エンジン２０５により実行される第１の承認ワークフロー及び特定のオペレーティングシステムの要件に関してアプリケーションを検証する第２の承認エンジン２０５によって実行される第２の承認ワークフローがあってもよい。両方の承認ワークフローが成功して完了するとアプリケーションが検証される。
【００３３】
[0042]各承認エンジン２０５は、その承認エンジン２０５によって検証される必要がある提出パッケージ２０８を得ることができる（提出パッケージ取得ステップ１）。承認エンジン２０５は、検証エンジン２０３からのメタデータを使用してファイルサーバー２０６から提出パッケージのコンテンツを取り出すことができる（提出パッケージのコンテンツ取り出しステップ２）。承認エンジン２０５は、その間に承認エンジン２０５が検証エンジン２０３へアップデートを提供する、承認ワークフローを実行する（承認ワークフロー実行ステップ３）。更新は、承認ワークフローの完了の推定時間、承認ワークフローの実行中に生じるエラーなどの、承認ワークフロー処理の現在の状態に関連するデータを含んでもよい（更新提供ステップ４）。
【００３４】
[0043]検証エンジン２０３は更新に対して返答する応答を送る（応答ステップ５）。当該応答は、推定される完了時間に対する変更又は推定される完了時間の確認を含むことができる。更新は承認エンジン２０５によって定期的に検証エンジン２０３に提供され、検証エンジン２０３は更新を追跡し、それに応じて応答する。最後の更新は、成功するかもしれないし又は失敗するかもしれない承認ワークフローの結果を含んでもよい。
【００３５】
[0044]１つ又は複数の実施例では、検証エンジン２０３は、検証エンジンのタスクのサブセットを実行するために１つ又は複数の独立した実行のスレッドを利用することができるプロセスとして実施することができる。例えば、検証エンジン２０３は、ユーザーから提出要求を受け取るために１つのスレッドを利用してもよいし、承認エンジンから更新を受け取るために別のスレッドを利用してもよい。同様に、各承認エンジン２０５は、承認エンジンのタスクを実行するために１つ又は複数の独立した実行のスレッドを利用することができる。例えば、承認エンジン２０５は、承認ワークフローを実行するために１つのスレッドを利用し、検証エンジン２０３に更新を提供するために別のスレッドを利用してもよい。しかし、実施例は、検証エンジン２０３及び承認エンジン２０５のいかなる特定の実施例にも制約されない。検証エンジン２０３及び承認エンジン２０５は、連続的な方法で実行されてもよいし、並行して実行されてもよい。実施例はこのように制約されない。
【００３６】
[0045]図６−７は、検証エンジン２０３の例示的な方法を示すフロー図である。方法は、本明細書に記載される１つ又は複数の実施例によって実行される動作の一部又は全部を表すことができること、及び、方法が図６−７に記載されるものより多くの又は少ない動作を含み得ることに留意すべきである。
【００３７】
[0046]検証エンジン２０３は、提出要求を処理する１つ又は複数のスレッドを作成し（ブロック４０２）、保留中の承認ワークフローを監視する１つ又は複数のスレッドを作成する（ブロック４１６）ことができる。このように、検証エンジン２０３は、複数の承認ワークフローを同時に処理することができる。
【００３８】
[0047]検証エンジン２０３は、提出パッケージに対していくつかの予備的な検証チェックを実行することができる（ブロック４０４）。予備的な検証チェックが失敗する場合（ブロック４０６のいいえ）、検証エンジン２０３はエラーを示すエラーレポートをベンダーに返してもよい（ブロック４０８）。
【００３９】
[0048]提出パッケージが現在承認されている製品のためのものである場合（ブロック４１０のはい）、検証エンジン２０３は、保留中の承認ワークフローを中断して、現在の提出のための処理を開始してもよい（ブロック４１２）。提出パッケージが以前の提出に関連していない場合（ブロック４１０のいいえ）、提出パッケージはファイルサーバーに格納され、提出パッケージに関連付けられるメタデータは適切な承認キューへと配置される（ブロック４１４）。
【００４０】
[0049]図７を参照すると、検証エンジン２０３は、後で使用するために検証エンジン２０３によって格納される更新を各承認エンジン２０５から受け取る（ブロック５０２）。更新は、完了状態、完了の推定される時間、及び／又はベンダーに返すことができるメッセージを含んでもよい。承認ワークフローが完了したことを更新が示す場合（ブロック５０４のはい）、完了メッセージをベンダーに返してもよく、製品が市場１０２のカタログにリストアップされてもよい（ブロック５０６）。
【００４１】
[0050]そうではなく、更新が完了状態でない場合（ブロック５０４のいいえ）、更新は、完了の推定時間及びステータスを示してもよい（ブロック５０８）。検証エンジン２０３は、承認エンジン２０５に完了メッセージを送ることにより、完了の推定時間を確認することができる（ブロック５０８）。検証エンジン２０３はまた、検証エンジン２０３が承認エンジン２０５に送る完了の推定時間を変えてもよい（ブロック５０８）。
【００４２】
[0051]検証エンジン２０３は、各承認ワークフローの完了の推定時間を追跡する。完了時間が経過し、検証エンジン２０３が承認エンジン２０５から更新を受け取っていない場合、検証エンジン２０３は警告を発してもよい（ブロック５１２）。警告は承認エンジン２０５に関連する問題を示すために使用される。例えば、承認エンジン２０５は、オフラインであることがあり、承認エンジン２０５が承認ワークフローを完了することを妨げる障害に直面した場合もある。
【００４３】
[0052]図８は、承認エンジン２０５の例示的な方法６００のフロー図を示す。方法が、本明細書に記載された１つ又は複数の実施例によって実行される動作の一部又は全部を表すことができること、方法が図８で説明されるものよりも多くの又は少ない動作を含み得ることに留意すべきである。
【００４４】
[0053]承認エンジン２０５は、特定のタイプのアプリケーションに関連付けられる承認ワークフローを実行するように構成されてもよい。承認エンジン２０５は、他の承認エンジン２０５にとって利用できない可能性のある特定のカテゴリーのアプリケーションについての承認ワークフローを実行するのに必要な特別なリソースを備えていてもよい。承認ワークフローは、一連の実行可能命令として実施することができる一連のタスクである。
【００４５】
[0054]承認エンジン２０５は、承認エンジン２０５に関連付けられる承認キュー２３０におけるエントリーのために検証エンジン２０３をポーリングすることができる（ブロック６０２）。承認キュー２３０におけるエントリーは、提出パッケージ２０８の位置を示すメタデータ、承認ワークフローを実行するために必要な特別なリソースなどを含んでもよい（ブロック６０４）。承認エンジン２０５は、提出パッケージ２０８の特定のコンテンツを得るためにメタデータを利用してもよい（ブロック６０４）。承認エンジン２０５は、提出パッケージ２０８のコンテンツを分析し、少なくとも、承認ワークフローの完了の推定時間を示す送信メッセージを検証エンジン２０３に提供するすることができる（ブロック６０４）。
【００４６】
[0055]承認エンジン２０５は、完了の推定時間を確認するか、又は完了の推定時間を新しい時間に変更する検証エンジン２０３から確認を受け取ってもよい（ブロック６０６）。検証エンジン２０３はまた、承認エンジン２０５が折り返し報告をする必要がないことを承認エンジン２０５に知らせ、承認エンジン２０５が完了時間を推測することを可能にし、又は承認プロセスをキャンセルすることができる（ブロック６０６）。承認エンジン２０５は、検証エンジン２０３に更新を定期的に提出している間、承認ワークフローを実行することができる（ブロック６０８）。承認エンジン２０５は、完了のために承認ワークフローを実行してもよく、完了ステータスが検証エンジン２０３に返される（ブロック６１０）。完了ステータスは、承認ワークフローが成功裡に実行されたことを示してもよく、メッセージ及び重大でない警告を含み、それによって、市場での配布のために製品を検証してもよい。完了ステータスはまた、承認ワークフローがうまく実行されず、検証エンジン２０３に折り返し報告され得るエラー又は障害に直面したことを示してもよい。
【００４７】
[0056]ここで、例示的な動作環境の議論に注目を向ける。図９は動作環境７００を示す。動作環境７００は例示的なものであり、実施例の機能に関していかなる限定も示唆するものではないことに留意すべきである。実施例は、通信フレームワーク７０４を介して１つ又は複数のサーバーデバイス７０６と通信する１つ又は複数のクライアントデバイス７０２を有する動作環境７００に適用することができる。各ユーザー１０６及びベンダー１０８はクライアントデバイス７０２を利用することができる。市場は、１つ又は複数のサーバーデバイス７０６を利用するサービスとして実施されてもよい。
【００４８】
[0057]クライアントデバイス７０２は、ハードウェアデバイス、ソフトウェアモジュール、又はそれらの組み合わせとして具現化することができる。そのようなハードウェアデバイスの例は、コンピューター（例えば、サーバー、パーソナルコンピューター、ラップトップなど）、携帯電話、パーソナルデジタルアシスタント、又は任意のタイプのコンピューティングデバイスなどを含むことができるが、これらに限定されない。クライアントデバイス７０２はまた、単一の実行パスで、複数の並列実行パス（例えば、スレッド、プロセスなど）で、又は任意の他の方法で実行される命令を有するソフトウェアモジュールとして具体化することができる。
【００４９】
[0058]サーバーデバイス７０６は、ハードウェアデバイス、ソフトウェアモジュール、又はそれらの組み合わせとして具現化することができる。そのようなハードウェアデバイスの例は、コンピューター（例えば、サーバー、パーソナルコンピューター、ラップトップなど）、携帯電話、パーソナルデジタルアシスタント、又は任意のタイプのコンピューティングデバイスなどを含むことができるが、これらに限定されない。サーバーデバイス７０６はまた、単一の実行パスで、複数の並列実行パス（例えば、スレッド、プロセスなど）で、又は任意の他の方法で実行される命令を有するソフトウェアモジュールとして具体化することができる。
【００５０】
[0059]通信フレームワーク７０４は、クライアントデバイス７０２とサーバーデバイス７０６との間の通信を容易にする。通信フレームワーク７０４は、パケット交換ネットワーク（例えば、インターネットなどの公衆ネットワーク、企業のイントラネットなどのプライベートネットワークなど）、回線交換ネットワーク（例えば、公衆交換電話網）、又は（適切なゲートウェイ及び変換装置を備える）パケット交換ネットワークと回線交換ネットワークとの組み合わせとともに使用するのに適した技術などの任意の周知の通信技術を具現化することができる。クライアントデバイス７０２及びサーバーデバイス７０６は、１つ又は複数の通信インターフェイス、ネットワークインターフェイス、ネットワークインターフェイスカード、無線機、無線送信機／受信機、有線及び／又は無線通信媒体、物理コネクターなどの、通信フレームワーク７０４と相互運用できるように設計された様々なタイプの標準的な通信要素を含むことができる。有線通信媒体の例は、ワイヤ、ケーブル、金属リード線、プリント回路基板、バックプレーン、スイッチファブリック、半導体材料、ツイストペア線、同軸ケーブル、光ファイバー、伝搬信号などを含むことができる。無線通信媒体の例は、音響、無線周波数スペクトル、赤外線、及び他の無線媒体を含むことができる。
【００５１】
[0060]各々のクライアントデバイス７０２は、クライアントデバイス７０２に対してローカルな情報を格納する１つ又は複数のクライアントデータストア７０８に結合されてもよい。各々のサーバーデバイス７０６は、サーバーデバイス７０６に対してローカルな情報を格納する１つ又は複数のサーバーデータストア７１０に結合されてもよい。
【００５２】
[0061]図１０は、承認エンジン及び検証エンジンが提出検証サーバー８００において実行される市場構成における例示的な提出検証サーバー８００の第１の実施例のブロック図を示す。提出検証サーバー８００は、１つ又は複数のプロセッサー８０２、ディスプレイ８０４、ネットワークインターフェイス８０６、メモリー８０８、及び／又はユーザー入力インターフェイス８１０を有してもよい。プロセッサー８０２は、任意の市販のプロセッサーとすることができ、デュアルマイクロプロセッサー及びマルチプロセッサーアーキテクチャーを含むことができる。ディスプレイ８０４は任意の視覚的表示ユニットであってもよい。ネットワークインターフェイス８０６は、提出検証サーバー２０２と通信フレームワークとの間の有線又は無線通信を容易にする。ユーザー入力インターフェイス８１０は、提出検証サーバー８００とキーボードやマウスなどの入力デバイスとの間の通信を容易にする。
【００５３】
[0062]メモリー８０８は、実行可能な手順、アプリケーション、及びデータを格納することができる任意のコンピューター読み取り可能な記憶媒体とすることができる。コンピューター読み取り可能な媒体は、搬送波を介して送信される変調データ信号などの伝搬信号に関係しない。これは、任意のタイプのメモリーデバイス（例えば、ランダムアクセスメモリー、リードオンリーメモリーなど）、磁気ストレージ、揮発性ストレージ、不揮発性ストレージ、光ストレージ、ＤＶＤ、ＣＤ、フロッピー（登録商標）ディスクドライブなどとすることができる。メモリー８０８はまた、１つ又は複数の外部ストレージデバイス又は遠隔に位置するストレージデバイスを含むことができる。メモリー８０８は以下のような命令及びデータを含んでもよい。
【００５４】
・オペレーティングシステム８１２
・検証エンジン２０２
・１つ又は複数の承認キュー２３０
・承認エンジン２０５
・１つ又は複数の承認ワークフロー８１４
・様々な他のアプリケーション及びデータ８１６
[0063]図１１は、承認エンジン２０５及び検証エンジン２０３が異なるサーバーにおいて実行される市場構成における例示的な提出検証サーバー８２０の第２の実施例のブロック図を示す。提出検証サーバー８２０は、１つ又は複数のプロセッサー８２２、ディスプレイ８２４、ネットワークインターフェイス８２６、メモリー８２８、及び／又はユーザー入力インターフェイス８３０を有することができる。プロセッサー８２２は、任意の市販のプロセッサーとすることができ、デュアルマイクロプロセッサー及びマルチプロセッサーアーキテクチャーを含むことができる。ディスプレイ８２４は視覚的表示デバイスであってもよい。ネットワークインターフェイス８２６は、提出検証サーバー８２０と通信フレームワークとの間の有線又は無線通信を容易にする。ユーザー入力インターフェイス８３０は、提出検証サーバー８２０とキーボードやマウスなどの入力デバイスとの間の通信を容易にする。
【００５５】
[0064]メモリー８２８は、実行可能な手順、アプリケーション、及びデータを格納することができる任意のコンピューター読み取り可能な記憶媒体とすることができる。コンピューター読み取り可能な媒体は、搬送波を介して送信される変調データ信号などの伝搬信号に関係しない。これは、任意のタイプのメモリーデバイス（例えば、ランダムアクセスメモリー、リードオンリーメモリーなど）、磁気ストレージ、揮発性ストレージ、不揮発性ストレージ、光ストレージ、ＤＶＤ、ＣＤ、フロッピー（登録商標）ディスクドライブなどとすることができる。メモリー８２８はまた、１つ又は複数の外部ストレージデバイス又は遠隔に位置するストレージデバイスを含むことができる。メモリー８２８は以下のような命令及びデータを含んでもよい。
【００５６】
・オペレーティングシステム８３２
・検証エンジン２０３
・１つ又は複数の承認キュー２３０
・承認エンジン２０５
・様々な他のアプリケーション及びデータ８３４
[0065]図１２は、例示的な承認サーバー８４０のブロック図を示す。承認サーバー８４０は、１つ又は複数のプロセッサー８４２、ディスプレイ８４４、ネットワークインターフェイス８４６、メモリー８４８、及び／又はユーザー入力インターフェイス８５０を有することができる。プロセッサー８４２は、任意の市販のプロセッサーとすることができ、デュアルマイクロプロセッサー及びマルチプロセッサーアーキテクチャーを含むことができる。ディスプレイ８４４は任意の視覚的表示ユニットであってもよい。ネットワークインターフェイス８４６は、承認サーバー８４０と通信フレームワークとの間の有線又は無線通信を容易にする。ユーザー入力インターフェイス８５０は、承認サーバー８４０となキーボードやマウスなどの入力デバイスとの間の通信を容易にする。
【００５７】
[0066]メモリー８４８は、実行可能な手順、アプリケーション、及びデータを格納することができる任意のコンピューター読み取り可能な記憶媒体とすることができる。コンピューター読み取り可能な媒体は、搬送波を介して送信される変調データ信号などの伝搬信号に関係しない。これは、任意のタイプのメモリーデバイス（例えば、ランダムアクセスメモリー、リードオンリーメモリーなど）、磁気ストレージ、揮発性ストレージ、不揮発性ストレージ、光ストレージ、ＤＶＤ、ＣＤ、フロッピー（登録商標）ディスクドライブなどとすることができる。メモリー８４８はまた、１つ又は複数の外部ストレージデバイス又は遠隔に位置するストレージデバイスを含むことができる。メモリー８４８は以下のような命令及びデータを含んでもよい。
【００５８】
・オペレーティングシステム８５２
・承認エンジン２０５
・１つ又は複数の承認ワークフロー８５４
・様々な他のアプリケーション及びデータ８５６
[0067]主題は、構造的特徴及び／又は方法論的動作に特有の言葉で説明されたが、添付の特許請求の範囲で規定される主題は、必ずしも上述の特定の特徴又は動作に限定されないことを理解すべきである。むしろ、上述の特定の特徴及び動作は、特許請求の範囲を実施する例示的形態として開示されるものである。
【００５９】
[0068]様々な実施例は、ハードウェア要素、ソフトウェア要素、又は両方の組み合わせを用いて実施することができる。ハードウェア要素の例は、デバイス、コンポーネント、プロセッサー、マイクロプロセッサー、回路、回路素子、集積回路、特定用途向け集積回路、プログラマブル論理デバイス、デジタル信号プロセッサー、フィールドプログラマブルゲートアレイ、メモリーユニット、論理ゲートなどを含むことができる。ソフトウェア要素の例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータープログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャー、ソフトウェアインターフェイス、アプリケーションプログラムインタフェース、命令セット、コンピューティングコード、コードセグメント、及びそれらの任意の組み合わせを含むことができる。実施例がハードウェア要素及び／又はソフトウェア要素を用いて実現されるかどうかの決定は、所与の実施について望まれるような、所望の計算速度、電力レベル、帯域幅、計算時間、負荷バランス、メモリーリソース、データバス速度及び他の設計又は性能の制約などの、任意の数の要因に応じて変わり得る。
【図１】
2015524131.tif 000003
【図２】
2015524131.tif 000004
【図３】
2015524131.tif 000005
【図４】
2015524131.tif 000006
【図５】
2015524131.tif 000007
【図６】
2015524131.tif 000008
【図７】
2015524131.tif 000009
【図８】
2015524131.tif 000010
【図９】
2015524131.tif 000011
【図１０】
2015524131.tif 000012
【図１１】
2015524131.tif 000013
【図１２】
2015524131.tif 000014
【国際調査報告】
2015524131.tif 000015
2015524131.tif 000016