IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7511636並列プロセス・モデルのステートチャートへの変換
<>
  • 特許-並列プロセス・モデルのステートチャートへの変換 図1
  • 特許-並列プロセス・モデルのステートチャートへの変換 図2
  • 特許-並列プロセス・モデルのステートチャートへの変換 図3
  • 特許-並列プロセス・モデルのステートチャートへの変換 図4
  • 特許-並列プロセス・モデルのステートチャートへの変換 図5
  • 特許-並列プロセス・モデルのステートチャートへの変換 図6
  • 特許-並列プロセス・モデルのステートチャートへの変換 図7
  • 特許-並列プロセス・モデルのステートチャートへの変換 図8
  • 特許-並列プロセス・モデルのステートチャートへの変換 図9
  • 特許-並列プロセス・モデルのステートチャートへの変換 図10
  • 特許-並列プロセス・モデルのステートチャートへの変換 図11
  • 特許-並列プロセス・モデルのステートチャートへの変換 図12
  • 特許-並列プロセス・モデルのステートチャートへの変換 図13
  • 特許-並列プロセス・モデルのステートチャートへの変換 図14
  • 特許-並列プロセス・モデルのステートチャートへの変換 図15
  • 特許-並列プロセス・モデルのステートチャートへの変換 図16
  • 特許-並列プロセス・モデルのステートチャートへの変換 図17
  • 特許-並列プロセス・モデルのステートチャートへの変換 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-27
(45)【発行日】2024-07-05
(54)【発明の名称】並列プロセス・モデルのステートチャートへの変換
(51)【国際特許分類】
   G06F 8/75 20180101AFI20240628BHJP
   G06F 9/48 20060101ALN20240628BHJP
【FI】
G06F8/75
G06F9/48 370
【請求項の数】 14
(21)【出願番号】P 2022523062
(86)(22)【出願日】2020-11-02
(65)【公表番号】
(43)【公表日】2023-01-18
(86)【国際出願番号】 IB2020060264
(87)【国際公開番号】W WO2021090140
(87)【国際公開日】2021-05-14
【審査請求日】2023-04-24
(31)【優先権主張番号】16/677,381
(32)【優先日】2019-11-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】中村 宏明
(72)【発明者】
【氏名】宮本 晃太郎
(72)【発明者】
【氏名】工藤 道治
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2017-211800(JP,A)
【文献】米国特許出願公開第2010/0281241(US,A1)
【文献】高谷 彰俊 ほか,UMLシーケンス図におけるモデル検証方法,電子情報通信学会技術研究報告 Vol.108 No.56,日本,社団法人電子情報通信学会,2008年,13~18頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/75
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
ビジネス・プロセス・モデル(BPM)を階層ステートチャートに自動的に変換するためのコンピュータ実施方法であって、前記BPMは、少なくとも1つのFORKノードと少なくとも1つのJOINノードとを備える並列パスを有し、前記コンピュータ実施方法は、
ノード分析において前記BPM内の前記少なくとも1つのFORKノードのそれぞれを識別するのに応じて、
前記少なくとも1つのFORKノードからのエッジのそれぞれに対する初期状態と作業状態とを有する、FORKエッジ・サブステートチャートを生成して、前記FORKエッジ・サブステートチャートを、前記少なくとも1つのFORKノードに対する階層状態に添付すること、および
前記FORKノードを通過する各JOINノードに対応するシンクロナイザ・サブステートチャートを生成して各FORKエッジ・サブステートチャートから同期イベントを受信し、前記シンクロナイザ・サブステートチャートを、前記少なくとも1つのFORKノードに対する前記階層状態に添付して、前記階層ステートチャートの中間バージョンを形成することを含む、コンピュータ実施方法。
【請求項2】
前記ノード分析において前記BPM内の前記少なくとも1つのJOINノードのそれぞれを識別するのに応じて、
前記FORKエッジ・サブステートチャートの前記作業状態からの遷移を生成して、前記同期イベントを前記シンクロナイザ・サブステートチャートへ送信すること、
第2の作業状態を生成すること、
同期イベントを送信する遷移の数と、前記同期イベントを受信する遷移の数が等しいことに応じて、前記少なくとも1つのFORKノードに対する前記階層状態から前記第2の作業状態への遷移を生成して、前記階層ステートチャートの最終バージョンを形成すること、および
前記遷移の数が等しくないことに応じて、前記少なくとも1つのFORKノードに対する前記シンクロナイザ・サブステートチャートから前記第2の作業状態への遷移を生成して、前記階層ステートチャートの前記最終バージョンを形成すること
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記ノード分析は、前記BPMの各ノードを分析して、前記少なくとも1つのFORKノードと前記少なくとも1つのJOINノードとを識別することを含む、請求項2に記載のコンピュータ実施方法。
【請求項4】
前記BPMが在庫管理に関係しており、前記コンピュータ実施方法は、閾値未満の現在在庫に関係する前記階層ステートチャートの前記最終バージョンにおける状態に応じて、前記現在在庫を有する品目を自動的に在庫補充することをさらに含む、請求項2に記載のコンピュータ実施方法。
【請求項5】
前記コンピュータ実施方法は、前記ノード分析において前記少なくとも1つのJOINノードへの非初回訪問に応じて、前記ノード分析において使用された横断パス上を後方に移動することをさらに含む、請求項2に記載のコンピュータ実施方法。
【請求項6】
前記第2の作業状態が、前記階層ステートチャートに対する前記BPMの現在状態を表す、請求項2に記載のコンピュータ実施方法。
【請求項7】
前記FORKエッジ・サブステートチャートの前記作業状態からの前記遷移、および前記FORKノードに対する前記階層状態からの前記遷移はガードされていない、請求項2に記載のコンピュータ実施方法。
【請求項8】
前記階層ステートチャートの前記最終バージョンを使用して前記BPMをモデル化するコンピュータ・プログラムを、コード生成器によって自動的に生成することをさらに含む、請求項2に記載のコンピュータ実施方法。
【請求項9】
前記ノード分析において前記BPM内の前記少なくとも1つのFORKノードのそれぞれを識別するのに応じて、FORKエッジに対するサブステートチャートと、1つのシンクロナイザ・サブステートチャートとを生成することによって、前記少なくとも1つのFORKノードに対する前記階層状態を準備することをさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項10】
前記BPMが構造化BPMである、請求項1に記載のコンピュータ実施方法。
【請求項11】
前記BPMが非構造化BPMである、請求項1に記載のコンピュータ実施方法。
【請求項12】
前記ノード分析において前記BPM内の前記少なくとも1つのFORKノードのそれぞれを識別するのに応じて、
前記FORKノードによって作成される2つの並列パスのうちの1つの初期状態を、前記FORKノードへの初回の訪問に応じて現在状態に割り当てること、および
前記FORKノードによって作成される前記2つの並列パスのうちの別の1つの前記初期状態を、前記FORKノードへの後続の訪問に応じて前記現在状態に割り当てること
をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項13】
ビジネス・プロセス・モデル(BPM)を階層ステートチャートに自動的に変換するためのコンピュータ・プログラムであって、前記BPMは、少なくとも1つのFORKノードと少なくとも1つのJOINノードとを備える並列パスを有し、コンピュータに、請求項1乃至12のいずれかに記載の方法を実行させる、コンピュータ・プログラム。
【請求項14】
ビジネス・プロセス・モデル(BPM)を階層ステートチャートに自動的に変換するためのコンピュータ処理システムであって、前記BPMは、少なくとも1つのFORKノードと少なくとも1つのJOINノードとを備える並列パスを有し、前記コンピュータ処理システムは、
その中に記憶されたプログラム・コードを含むメモリ・デバイスと、
前記メモリ・デバイスに動作可能に結合されたハードウエア・プロセッサと
を含み、前記ハードウエア・プロセッサは、
ノード分析において前記BPM内の前記少なくとも1つのFORKノードのそれぞれを識別するのに応じて、
前記少なくとも1つのFORKノードからのエッジのそれぞれに対する初期状態と作業状態とを有する、FORKエッジ・サブステートチャートを生成して、前記FORKエッジ・サブステートチャートを、前記少なくとも1つのFORKノードに対する階層状態に添付し、
前記FORKノードを通過する各JOINノードに対応するシンクロナイザ・サブステートチャートを生成して各FORKエッジ・サブステートチャートから同期イベントを受信し、前記シンクロナイザ・サブステートチャートを、前記少なくとも1つのFORKノードに対する前記階層状態に添付して、前記階層ステートチャートの中間バージョンを形成する
ように、前記メモリ・デバイスに記憶されたプログラム・コードを実行させるように構成されている、コンピュータ処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的には情報処理に関し、より詳細には、並列プロセス・モデルをステートチャートに変換することに関する。
【背景技術】
【0002】
ビジネス・プロセス・モデルからステートチャートへの変換は、ブロックチェーン・ベース分散アプリケーションを含む、分散アプリケーションの開発の合理化に寄与する。しかしながら、並列ビジネス・プロセス・モデルは、ステートチャートではうまく把握されない。1つの理由は、ビジネス・プロセス・モデルは、並列パスの任意の組合せを可能にするのに対して、ステートチャートにおいては、並列パスは、別個のサブステートチャート(sub-statechart)として階層的に構造化されなくてはならないからである。すなわち、並列プロセス・モデルをステートチャートに変換する方法が必要である。
【発明の概要】
【0003】
本発明の一態様によれば、ビジネス・プロセス・モデル(BPM)を階層ステートチャートに自動的に変換するためのコンピュータ実施方法が提供される。BPMは、少なくとも1つのFORKノードと少なくとも1つのJOINノードとを備える並列パスを有する。この方法は、ノード分析においてBPM内の少なくとも1つのFORKノードのそれぞれを識別するのに応じて、(i)少なくとも1つのFORKノードからのエッジのそれぞれに対する初期状態と作業状態とを有する、FORKエッジ・サブステートチャートを生成して、このFORKエッジ・サブステートチャートを、少なくとも1つのFORKノードに対する階層状態に添付すること、および(ii)FORKノードを通過する各JOINノードに対応するシンクロナイザ・サブステートチャートを生成して各FORKエッジ・サブステートチャートから同期イベントを受信し、このシンクロナイザ・サブステートチャートを、少なくとも1つのFORKノードに対する階層状態に添付して、階層ステートチャートの中間バージョンを形成することを含む。
【0004】
本発明の別の態様によれば、ビジネス・プロセス・モデル(BPM)を階層ステートチャートに自動的に変換するためのコンピュータ・プログラム製品が提供される。BPMは、少なくとも1つのFORKノードと少なくとも1つのJOINノードとを備える並列パスを有する。コンピュータ・プログラム製品は、プログラム命令が具現化された非一過性コンピュータ可読記憶媒体を含む。このプログラム命令は、コンピュータに方法を実行させるようにコンピュータによって実行可能である。この方法は、ノード分析においてBPM内の少なくとも1つのFORKノードのそれぞれを識別するのに応じて、(i)少なくとも1つのFORKノードからのエッジのそれぞれに対する初期状態と作業状態とを有する、FORKエッジ・サブステートチャートを生成して、このFORKエッジ・サブステートチャートを、少なくとも1つのFORKノードに対する階層状態に添付すること、および(ii)FORKノードを通過する各JOINノードに対応するシンクロナイザ・サブステートチャートを生成して各FORKエッジ・サブステートチャートから同期イベントを受信し、このシンクロナイザ・サブステートチャートを、少なくとも1つのFORKノードに対する階層状態に添付して、階層ステートチャートの中間バージョンを形成することを含む。
【0005】
本発明のさらに別の態様によれば、ビジネス・プロセス・モデル(BPM)を階層ステートチャートに自動的に変換するためのコンピュータ処理システムが提供される。BPMは、少なくとも1つのFORKノードと少なくとも1つのJOINノードとを備える並列パスを有する。このシステムは、その中に記憶されたプログラム・コードを含むメモリ・デバイスを含む。このシステムは、メモリ・デバイスに動作可能に結合されたハードウエア・プロセッサをさらに含み、このハードウエア・プロセッサは、ノード分析においてBPM内の少なくとも1つのFORKノードのそれぞれを識別するのに応じて、(i)少なくとも1つのFORKノードからのエッジのそれぞれに対する初期状態と作業状態とを有する、FORKエッジ・サブステートチャートを生成して、このFORKエッジ・サブステートチャートを、少なくとも1つのFORKノードに対する階層状態に添付し、(ii)FORKノードを通過する各JOINノードに対応するシンクロナイザ・サブステートチャートを生成して各FORKエッジ・サブステートチャートから同期イベントを受信し、このシンクロナイザ・サブステートチャートを、少なくとも1つのFORKノードに対する階層状態に添付して、階層ステートチャートの中間バージョンを形成するように、メモリ・デバイスに記憶されたプログラム・コードを実行させるように構成されている。
【0006】
これら、およびその他の特徴および利点は、添付の図面と合わせて読まれる、その例証用の実施形態についての以下の詳細な説明から明白になるであろう。
【0007】
以下の説明は、以下の図を参照して、好ましい実施形態の詳細を提供する。
【図面の簡単な説明】
【0008】
図1】本発明の実施形態による、例示的な処理システムを示す、ブロック図である。
図2】本発明の実施形態による、本発明をそれに応用可能な、例示的なビジネス・プロセス・モデル(BPM)を示す、ブロック図である。
図3】、本発明の実施形態による、BPM200から変換された、例示的な出力階層ステートチャートを示す図である。
図4】本発明の実施形態による、ビジネス・プロセス・モデル(BPM)を階層ステートチャートに変換するための例示的な方法を示す、フロー図である。
図5】本発明の実施形態による、ビジネス・プロセス・モデル(BPM)を階層ステートチャートに変換するための例示的な方法を示す、フロー図である。
図6】本発明の実施形態による、BPMを階層ステートチャートに変換するメイン・プロシージャのための例示的な疑似コードを示す図である。
図7】本発明の実施形態による、BPMを階層ステートチャートに変換するメイン・プロシージャのための例示的な疑似コードを示す図である。
図8】本発明の実施形態による、イベントを作成するサブプロシージャのための例示的な疑似コードを示す図である。
図9】本発明の実施形態による、シンクロナイザを添付するサブプロシージャのための例示的な疑似コードを示す図である。
図10】本発明の実施形態による、サブステートチャートを添付するサブプロシージャのための例示的な疑似コードを示す図である。
図11】本発明の実施形態による、本発明をそれに応用可能な、例示的な構造化BPMを示す図である。
図12】本発明の実施形態による、構造化BPM1100から変換された例示的な出力階層ステートチャートを示す図である。
図13】本発明の実施形態による、本発明をそれに応用可能な、例示的な非構造化BPMを示す図である。
図14】本発明の実施形態による、非構造化BPM1300から変換された例示的な出力階層ステートチャートを示す図である。
図15】本発明の実施形態による、BPMを階層ステートチャートに変換するための例示的な方法を示す、フロー図である。
図16】本発明の実施形態による、BPMを階層ステートチャートに変換するための例示的な方法を示す、フロー図である。
図17】本発明の実施形態による、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが、それと通信する1つまたは複数のクラウド・コンピューティング・ノードを有する、例証的なクラウド・コンピューティング環境を示す、ブロック図である。
図18】本発明の実施形態による、クラウド・コンピューティング環境によって提供される、1組の機能的抽象化レイヤ(functional abstraction layer)を示すブロック図である。
【発明を実施するための形態】
【0009】
本発明の実施形態は、並列プロセス・モデルをステートチャートに変換することを目的としている。
【0010】
一実施形態において、本発明は、構造化されたもの、および構造化されていないものの両方を含む、並列ビジネス・プロセス・モデルをステートチャートに変換することのできる、変換方法を提供することができる。
【0011】
一実施形態において、同期は、ステートチャートによって送信および受信されるイベントだけによって実現される。ガード条件またはその他の手段は使用されない。
【0012】
一実施形態において、ステートチャート間の通信は同期しており、その結果として、ブロックチェーンは、システム全体の最後のスナップショットを追跡することができる。待ち行列またはその他の非同期通信機構は使用されない。
【0013】
一実施形態において、本発明がそれに応用されるビジネス・プロセス・モデルは、FORKノードおよびJOINノードを備える並列パスを含む。FORKノードは、並行して実行される2つのパスにフローを分割するノードである。JOINノードは、2つのノードを結合するノードである。
【0014】
一実施形態において、FORK要素は、2つの外に出るフローに対応する2つのサブステートチャートを有する階層状態として表される。
【0015】
一実施形態において、JOIN要素は、パスを同期する(シンクロナイザ)ための2つのイベントと、イベントをシンクロナイザに送信する2つの遷移とを受信するステートチャートとして表される。
【0016】
フラット・ステートチャートは、有向グラフ(directed graph)として表され、ここにおいて状態(state)はノードであり、状態遷移はグラフのエッジである。遷移は、遷移をトリガリングする受信イベントを指定するラベルを有することができる。遷移は、イベントを送信することを含むアクションを実行することができる。
【0017】
本発明の実施形態によって使用される場合には、階層ステートチャートは、状態がサブステートチャートを有することができる点において、フラット・ステートチャートの拡張である。複数のサブステートチャートが、単一の状態に添付される場合には、それらは並行して実行され得る。本発明は、BPMを階層ステートチャートに有利に変換する。階層ステートチャートは、強化されたステート・マシン(state machine)と考えられ得る。状態に入ると、そのサブステート・マシンが始動し、それゆえに、下位状態(サブステート)に入る。状態から出ると、そのサブステート・マシンからも出る、すなわち、任意のサブステートも出る。したがって、階層ステートチャートは、本質的に、任意の状態が、より多くのマシンを階層様式で含むことを可能にする、ステート・マシンである。
【0018】
図1は、本発明の実施形態による、例示的な処理システム100を示す、ブロック図である。処理システム100は、1組の処理ユニット(例えば、CPU)101、1組のGPU102、1組のメモリ・デバイス103、1組の通信デバイス104、および1組の周辺機器105を含む。CPU101は、シングル・コアまたはマルチ・コアのCPUであり得る。GPU102は、シングル・コアまたはマルチ・コアのGPUであり得る。1つまたは複数のメモリ・デバイス103は、キャッシュ、RAM、ROM、およびその他のメモリ(フラッシュ、光、磁気など)を含むことができる。通信デバイス104は、無線または有線あるいはその両方の通信デバイス(例えば、ネットワーク(例えば、WIFIなど)アダプタなど)を含むことができる。周辺機器105は、ディスプレイ・デバイス、ユーザ入力デバイス、プリンタ、イメージング・デバイス、その他を含むことができる。処理システム100の要素は、1つまたは複数のバスまたはネットワーク(総称的に図参照番号110によって示される)によって接続されている。
【0019】
一実施形態において、メモリ・デバイス103は、専用にプログラムされたソフトウエア・モジュールを記憶して、コンピュータ処理システムを、本発明の様々な態様を実施するように構成された、専用コンピュータに変換することができる。例えば、一実施形態においては、メモリ・デバイス103は、BPMから階層ステートチャートへの変換器103Aおよびコード生成器103Bを含む。実施形態では、コード生成器は、BPMを変換することによって得られる階層ステートチャートに基づいてBPMをモデル化するコンピュータ・プログラムを生成するのに使用される。一実施形態において、専用ハードウエア(例えば、特定用途向け集積回路、フィールド・プログラマブル・ゲートアレイ(FPGA)、その他)を使用して、本発明の様々な態様を実施することができる。
【0020】
もちろん、処理システム100はまた、当業者によって容易に企図されるように、他の要素(図示せず)を含んでもよく、また特定の要素を省略してもよい。例えば、当業者によって容易に理解されるように、処理システム100の具体的な実施に応じて、様々な他の入力デバイスまたは出力デバイス、あるいはその両方をそれに含めることができる。例えば、様々なタイプの無線または有線、あるいはその両方の入力デバイスまたは出力デバイス、あるいはその両方を使用することができる。さらに、追加のプロセッサ、コントローラ、メモリ、その他も、様々な構成で利用することができる。さらに、別の実施形態においては、クラウド構成を使用することができる(例えば、図17図18を参照)。処理システム100のこれらおよびその他の変形形態は、本明細書において提供される本発明の教示を与えられれば、当業者によって容易に予期される。
【0021】
さらに、システム100の要素のうちの1つまたは複数によって全体的または部分的に実施され得る、本発明に関連する様々な要素およびステップについて、様々な図が以下に記載されていることを理解されたい。
【0022】
図2は、本発明の実施形態による、本発明をそれに応用可能な、例示的なビジネス・プロセス・モデル(BPM)200を示すブロック図である。
【0023】
BPM200は、1つの開始ノード/イベント201および1つの終了ノード/イベント291を有する有向グラフとして表される。BPM200は、少なくとも1つのFORKノード210、少なくとも1つのJOINノード220、および2つのノードを接続するフロー・エッジ230をさらに含む。開始ノード/イベント201がプロセスをトリガリングする。終了ノード/イベント291は、プロセスの結果を表す。FORKノード210は、フローを、並行して実行される2つのパスに分割する。JOINノード220は、2つの並列フローを1つのフローに結合する。フロー・エッジ230は2つのノードを接続する。
【0024】
図3は、本発明の実施形態による、BPM200から変換された、例示的な出力階層ステートチャート300を示す図である。
【0025】
ステートチャート300において、次のことが適用される:
j2は、第1のFORKエッジ・サブステートチャートからシンクロナイザに送信されるイベントを示し、
j2’は、第2のFORKエッジ・サブステートチャートからシンクロナイザに送信されるイベントを示し、
/j2は、第1のFORKエッジ・サブステートチャートからイベントj2を送信するアクションを示し、
/j2’は、第2のFORKエッジ・サブステートチャートからイベントj2’を送信するアクションを示す。
【0026】
実線の矢印はノードからノードへの遷移を表すのに対して、破線は、出力階層ステートチャート300の部分間で同じイベントを送受信することによって実現される、同期を表す。
【0027】
図4~5は、本発明の実施形態による、ビジネス・プロセス・モデル(BPM)を階層ステートチャートに変換するための例示的な方法500を示すフロー図である。
【0028】
ブロック405において、BPMの各ノードを分析することによってノード分析を実行して、少なくとも1つのFORKノードおよび少なくとも1つのJOINノードを識別する。
【0029】
ブロック410において、ノード分析においてBPM内の少なくとも1つのFORKノードのそれぞれを識別することに応じて、
(i)少なくとも1つのFORKノードに対する階層状態を準備し、
(ii)初期状態と作業状態とを有するFORKエッジ・サブステートチャートを生成し、少なくとも1つのFORKノードからのエッジのそれぞれに対して、FORKエッジ・サブステートチャートを、少なくとも1つのFORKノードに対する階層状態に添付し、
(iii)FORKノードを通過する各JOINノードに対応するシンクロナイザ・サブステートチャートを生成して、各FORKエッジ・サブステートチャートから同期イベントを受信し、シンクロナイザ・サブステートチャートを少なくとも1つのFORKノードの階層状態に添付する。「FORKノードを通過するJOINノード」という表現は、JOINノードへのすべてのパスがFORKノードを通過することを意味する。
【0030】
ブロック415において、ノード分析においてBPM内の少なくとも1つのJOINノードのそれぞれを識別することに応じて、
(i)FORKエッジ・サブステートチャートの動作状態から遷移を生成して、同期イベントをシンクロナイザ・サブステートチャートに送信し、
(ii)第2の作業状態を生成し、
(iii)同期イベントを送信する遷移の数と、同期イベントを受信する遷移の数とが等しくなるのに応じて、FORKノードに対する階層状態から第2の作業状態への遷移を生成し、
(iv)遷移の数が等しくないことに応じて、FORKノードに対するシンクロナイザ・サブステートチャートから第2の作業状態への遷移を生成する。
【0031】
ブロック420において、階層ステートチャートを出力する。
【0032】
ブロック425において、階層ステートチャートの状態に応じてアクションを実行する。例えば、(1)第1のFORKエッジ・サブステートチャートが最終状態へ遷移するとき、イベントj2は、シンクロナイザ・サブステートチャートへ送信されるが、シンクロナイザは、他方のイベントj2’を受信するのを待機する状態のままである。(2)第2のFORKエッジ・サブステートチャートが最終状態へ遷移するとき、イベントj2’はシンクロナイザ・サブステートチャートへ送信され、次いでシンクロナイザがその最終状態へ遷移し、これによってステートチャート全体がその最終状態へと遷移させられる。例えば、一実施形態において、BPMを変換することによって得られる階層ステートチャートに基づいて、BPMをモデリングするコンピュータ・プログラムを生成するのに、コード生成器が使用される。研究によれば、ステートチャートから生成されたコードは、その他のベースから生成されたコードよりもバグが少ないことが示されている。
【0033】
図6および図7は、本発明の実施形態による、BPMを階層ステートチャートに変換するメイン・プロシージャ500のための例示的な疑似コードを示す図である。
【0034】
その目的で、以下の定義が適用される:
入力:プロセス・モデルP=<O,o,F>;
Oは、開始イベント、終了イベント、FORKノード、およびJOINノードを含む、フロー・オブジェクトの集合であり;
∈Oは、開始イベントであり;
F⊆O×Oはフロー関係であり;
出力:ステートチャートSC=<S,s,T,Fin>;
Sは状態の集合であり、
∈Sは初期状態であり、
T⊆S×S×E×Eは、1つの状態sから別の状態s'への遷移関係(s,s',e,a)であり、これは、イベントeが受信されるときに発生して、遷移に伴うアクションの結果として、イベントaを送信する。遷移が、送信イベントまたは受信イベントを有さないときには、それを(s,s’)と示す。
【0035】
Finは、最終状態の集合である。
【0036】
図8は、本発明の実施形態による、イベントを作成するサブプロシージャ800のための例示的な疑似コードを示す図である。
【0037】
サブプロシージャ800は、プロセス・オブジェクトoおよび数cを取るとともに、それからイベントeを出力する。
【0038】
図9は、本発明の実施形態による、シンクロナイザを添付するサブプロシージャ900のための例示的な疑似コードを示す図である。
【0039】
サブプロシージャ900は、入力として状態sおよびJOINノードjを取り、添付されたシンクロナイザ・サブステートチャートによって強化された状態sを出力する。
【0040】
図10は、本発明の実施形態による、サブステートチャートを添付するサブプロシージャ1000のための例示的な疑似コードを示す図である。
【0041】
サブプロシージャ1000は、入力として親状態sを取り、作業状態s'を出力する。
【0042】
例示的な構造化BPM、および例示的な非構造化BPMについて次に説明する。本明細書において使用されるとき、「構造化BPM」という用語は、それぞれが1つの入力エッジと1つの出力エッジだけを有する、サブ・ビジネス・プロセス・モデルの集合に分解されることが可能なビジネス・プロセス・モデルを指す。本明細書において使用されるとき、「非構造化BPM」という用語は、そのようなサブ・ビジネス・プロセス・モデルに分解されることが不可能なビジネス・プロセス・モデルを指す。
【0043】
図11は、本発明の実施形態による、本発明をそれに応用可能な例示的な構造化BPM1100を示す図である。
【0044】
構造化BPM1100は、開始イベント/ノード1101、AND FORK1111、AND FORK1112、AND JOIN1121、AND JOIN1122、フロー・エッジ1130、および終了イベント/ノード1191を含む。
【0045】
AND JOIN1121は、AND FORK1112によって即時にドミネートされる。定義として、入口からNへのすべてのパスがDを通過しなくてはならない場合には、DがNをドミネートする。別の定義として、DがNの他のいかなるドミネータもドミネートしない場合には、Dは即時にNをドミネートする。
【0046】
AND JOIN1122は、AND FORK1111によって即時にドミネートされる。
【0047】
図12は、本発明の実施形態による、構造化BPM1100から変換された例示的な出力階層ステートチャート1200を示す図である。
【0048】
シンクロナイザ1122は、対応するFORKパスが開始すると同時に作動可能になるので、FORKパスからいつでもイベントを受信することが可能であり、このことは、通信が常に同期していることを意味する。2番目のFORKエッジ・サブステートチャートが遷移すると、シンクロナイザ1121は作動可能となり、FORK1112パスからイベントを受信することができる。
【0049】
図13は、本発明の実施形態による、本発明をそれに応用可能な、例示的な非構造化BPM1300を示す図である。
【0050】
非構造化BPM1300は、開始イベント/ノード1301、AND FORK 1311、AND FORK 1312、AND JOIN 1321、およびAND JOIN1322を含む。
【0051】
AND JOIN1321は、AND FORK1311によって即時にドミネートされる。
【0052】
AND JOIN1322は、AND FORK1311によって即時にドミネートされる。
【0053】
図14は、本発明の実施形態による、非構造化BPM1300から変換された例示的な出力階層ステートチャート1400を示す図である。
【0054】
シンクロナイザは対応するFORKパスが開始すると同時に作動可能になるので、FORKパスからいつでもイベントを受信することが可能であり、このことは、通信は常に同期していることを意味する。階層ステートチャート1200とは異なり、イベントj4はj3とj3’の前に送信される可能性があり、シンクロナイザ・サブステートチャートによって受信される必要があるため、2つのシンクロナイザ1321および1322は、FORKエッジ・サブステートチャート遷移の前に、作動可能となる。
【0055】
図15および図16は、本発明の実施形態による、BPMを階層ステートチャートに変換するための例示的な方法1500を示すフロー図である。
【0056】
ブロック1505において、後続のブロックにおいて以下のように、ビジネス・プロセス・モデルの各ノードをビジネス・プロセス・モデルのエッジに関連する方向に横断する。
【0057】
ブロック1510において、ターゲット・ノードをFORKノードとして識別する。
【0058】
ブロック1515において、ターゲット・ノードが最初に訪問されるFORKノードであることに応じて、(i)FORKノードに対する階層状態を作成し、(ii)各JOINノードへのすべてのパスがFORKノードを通過するように、JOINノードを探索する。発見された各JOIN要素に対して、その他のサブステートチャートから同期イベントを受信する、シンクロナイザ・サブステートチャートを作成し、シンクロナイザを、FORKノードに対する階層状態に添付する。
【0059】
ブロック1520において、ターゲット・ノードがすでに訪問されたFORKノードであることに応じて、初期状態と作業状態とからなるサブステートチャートを作成して、それをFORKノードに対する階層状態に添付する。
【0060】
ブロック1525において、ターゲット・ノードをJOINノードとして識別する。
【0061】
ブロック1530において、ターゲット・ノードがJOINノードであることに応じて、作業状態からの遷移を作成する。遷移に対して、同期イベントを送信するアクションを添付する。
【0062】
ブロック1535において、ターゲット・ノードが、再び訪問されるJOINノードであることに応じて、横断パス上を後方に移動する。
【0063】
ブロック1540において、ターゲット・ノードが再び訪問されることのないJOINノードであることに応じて、JOINノードのシンクロナイザが属するFORKノードの階層状態において、イベントを送信する遷移とイベントを受信する遷移の数を数える。
【0064】
1545において、数が等しいことに応じて、作業状態と、FORK要素に対する階層状態から作業状態への遷移とを作成する。
【0065】
ブロック1550において、数が等しくないことに応じて、作業状態と、シンクロナイザから作業状態への遷移とを作成する。
【0066】
ブロック1555において、数が等しいか、または等しくないことに応じて、アクションを選択的に実行する。実施形態では、このアクションは、入力ビジネス・プロセス・モデルが構造化されているか、構造化されていないかに関係なく、イベントを送受信することによって同期的に発生するすべてのサブステートチャートの状態遷移を関与させることができる。
【0067】
一実施形態において、本発明は、BPMの対応するステートチャートへの変換を実行する、クラウド・ベース・サービスを提供することができる。
【0068】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載される教示の実施は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在知られている、または後に開発される任意の他のタイプのコンピューティング環境と組み合わせて、実施することができる。
【0069】
クラウド・コンピューティングは、最小限の管理作業またはサービスのプロバイダとの対話によって、迅速にプロビジョニングおよびリリースされ得る、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にする、サービス配信のモデルである。このクラウド・モデルには、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの配置モデルが含まれることがある。
【0070】
特徴は以下のとおりである:
オンデマンド・セルフサービス:クラウド・コンシューマは、サービスのプロバイダとの人的対話を必要とせずに、必要に応じて自動的にサーバ・タイムやネットワーク・ストレージなどのコンピューティング能力を一方的にプロビジョニングできる。
広域ネットワーク・アクセス:能力はネットワーク経由で利用可能であり、異種のシン・クライアント・プラットフォームまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準メカニズムを介してアクセスされる。
リソース・プーリング:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用して複数のコンシューマにサービスを提供するためにプールされ、様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当て、および再割り当てされる。コンシューマは通常、提供されたリソースの正確な場所を制御したり、それについての知識を得ることはないが、より高い抽象化のレベルにおいて場所を指定したりすることができる(国、州、データセンターなど)という点で、場所に依存しないという感覚がある。
迅速な弾力性(Rapid elasticity):能力は、迅速かつ弾力的に、場合によっては自動的に、プロビジョニングされて、機敏にスケール・アウトするとともに、迅速にリリースされて、機敏にスケール・インする。コンシューマには、プロビジョニングに使用できる能力は、無制限に見えることが多く、いつでも任意の数量で購入可能である。
測定可能なサービス:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適したある抽象化のレベルで計測能力を活用することにより、リソースの使用を自動的に制御および最適化する。リソースの使用を、監視、制御、および報告することが可能であり、利用されるサービスのプロバイダとコンシューマの両方に透明性が提供される。
【0071】
サービス・モデルは以下のとおりである:
サービスとしてのソフトウエア(SaaS):コンシューマに提供される能力は、クラウド・インフラストラクチャで実行されているプロバイダのアプリケーションを使用することである。これらのアプリケーションには、ウエブ・ブラウザ(例えば、ウエブ・ベースの電子メール)などのシン・クライアント・インターフェースを介して、様々なクライアント・デバイスからアクセス可能である。コンシューマは、制限されたユーザ固有のアプリケーション構成設定といった例外はあり得るが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション能力を含む、基盤となるクラウド・インフラストラクチャを管理または制御することはない。
サービスとしてのプラットフォーム(PaaS):コンシューマに提供される能力は、プロバイダがサポートするプログラミング言語とツールを使用して作成された、コンシューマ作成アプリケーションまたはコンシューマ取得アプリケーションをクラウド・インフラストラクチャに配置することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基盤となるクラウド・インフラストラクチャを管理または制御することはないが、配置されたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御する。
サービスとしてのインフラストラクチャ(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、およびコンシューマがオペレーティング・システムやアプリケーションを含む任意のソフトウエアを配置および実行することのできる、その他の基本的なコンピューティング・リソースをプロビジョニングすることである。コンシューマは、基盤となるクラウド・インフラストラクチャを管理または制御することはないが、オペレーティング・システム、ストレージ、配置されたアプリケーションを制御し、場合によっては、選択ネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)の限定された制御を行う。
【0072】
配置モデルは以下のとおりである:
プライベート・クラウド:クラウド・インフラストラクチャは、組織のためだけに運用され、組織またはサード・パーティによって管理され、オン・プレミスまたはオフ・プレミスに存在する場合がある。
コミュニティ・クラウド:クラウド・インフラストラクチャは、複数の組織で共有されており、懸念事項(例えば、ミッション、セキュリティ要件、ポリシー、コンプライアンス考慮事項)を共有している特定のコミュニティをサポートしている。組織またはサード・パーティによって管理され、オン・プレミスまたはオフ・プレミスに存在する場合がある。
パブリック・クラウド:クラウド・インフラストラクチャは、一般大衆または大規模な業界グループに対して利用可能にされており、クラウド・サービスを販売する組織によって所有されている。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成であり、一意のエンティティのままであるが、データとアプリケーションの可搬性(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)を可能にする標準化されたテクノロジまたは独自のテクノロジによって結合されている。
【0073】
クラウド・コンピューティング環境は、ステートレス性(statelessness)、弱結合(low coupling)、モジュール性、および意味的相互運用性に重点を置いた、サービス指向である。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0074】
ここで図17を参照すると、例証的なクラウド・コンピューティング環境1750が示されている。図示のように、クラウド・コンピューティング環境1750は、1つまたは複数のクラウド・コンピューティング・ノード1710を含み、これらのノードと、例えば、パーソナル・デジタル・アシスタント(PDA)または携帯電話1754A、デスクトップ・コンピュータ1754B、ラップトップ・コンピュータ1754C、または自動車コンピュータ・システム1754N、あるいはそれらの組合せなどの、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスと、通信することができる。ノード1710は、相互に通信することができる。それらは、上記のプライベート、コミュニティ、パブリック、またはハイブリッドの各クラウド、あるいはそれらの組合せなどの1つまたは複数のネットワークに、物理的または仮想的にグループ化(図示せず)されてもよい。これによって、クラウド・コンピューティング環境1750は、クラウド・コンシューマがローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして、インフラストラクチャ、プラットフォーム、またはソフトウエア、あるいはそれらの組合せを提供することができる。図17に示されるコンピューティング・デバイス1754A~Nのタイプは、例証のみを意図していること、およびコンピューティング・ノード1710およびクラウド・コンピューティング環境1750は、任意のタイプのネットワークまたはネットワーク・アドレス指定可能接続、あるいはその両方を介して(例えば、ウェブ・ブラウザを使用して)、任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。
【0075】
ここで図18を参照すると、クラウド・コンピューティング環境1750(図17)によって提供される機能的抽象化レイヤの集合が示されている。図18に示される構成要素、レイヤ、および機能は、例証のみを意図しており、本発明の実施形態はそれらに限定されないことを事前に理解されたい。図示されているように、以下のレイヤと対応する機能が提供される。
【0076】
ハードウエアおよびソフトウエアのレイヤ1860は、ハードウエア・コンポーネントおよびソフトウエア・コンポーネントを含む。ハードウエア・コンポーネントの例としては、メインフレーム1861、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ1862、サーバ1863、ブレード・サーバ1864、ストレージ・デバイス1865、ならびにネットワークおよびネットワーキング・コンポーネント1866が挙げられる。いくつかの実施形態では、ソフトウエア・コンポーネントとしては、ネットワーク・アプリケーション・サーバ・ソフトウエア1867およびデータベース・ソフトウエア1868が含まれる。
【0077】
仮想化レイヤ1870は、抽象化レイヤを提供し、この抽象化レイヤから、仮想エンティティの以下の例:仮想サーバ1871、仮想ストレージ1872、仮想プライベート・ネットワークを含む仮想ネットワーク1873、仮想アプリケーションおよびオペレーティング・システム1874、ならびに仮想クライアント1875が提供され得る。
【0078】
一例では、管理レイヤ1880は、以下に記載される機能を提供することができる。リソース・プロビジョニング1881は、クラウド・コンピューティング環境内でタスクを実行するために利用される、コンピューティング・リソースおよびその他のリソースの動的な調達を提供する。計測と価格設定1882は、リソースがクラウド・コンピューティング環境内で使用されるときの、コスト・トラッキングと、これらのリソースの消費に対する課金または請求を行う。一例では、これらのリソースには、アプリケーション・ソフトウエア・ライセンスを含めてもよい。セキュリティは、クラウド・コンシューマとタスクに対する本人確認と、データおよびその他のリソースの保護とを提供する。ユーザ・ポータル1883は、コンシューマとシステム管理者に対して、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理1884は、必要なサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当てと管理を提供する。サービス・レベル合意(SLA)の計画と履行1885は、SLAに従って将来の要件が予想される、クラウド・コンピューティング・リソースに対する事前手配、およびその調達を提供する。
【0079】
ワークロード・レイヤ1890は、クラウド・コンピューティング環境がそのために利用され得る、機能性の例を提供する。このレイヤから提供され得るワークロードと機能の例としては、マッピングとナビゲーション1891、ソフトウエア開発とライフサイクルの管理1892、仮想教室教育の配信1893、データ分析処理1894、トランザクション処理1895、ビジネス・プロセス・モデル(BPM)のステートチャートへの変換1896が挙げられる。
【0080】
本発明は、任意の可能な技術的詳細レベルの統合における、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有する、コンピュータ可読記憶媒体(複数可)を含み得る。
【0081】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるための命令を保持および記憶することができる、有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、それらに限定はされないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述事項の任意の適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例についての非網羅的リストには、以下のもの:ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能かつプログラム可能なリード・オンリー・メモリ(EPROMまたはフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカード、またはその上に記録された命令を有する溝内の隆起構造などの、機械的に符号化されたデバイス、および前述項目の任意の適切な組合せ、を含む。本明細書で使用される場合には、コンピュータ可読記憶媒体とは、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤーを介して伝送される電気信号などの一過性の信号自体であると解釈されるべきではない。
【0082】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイスにダウンロードするか、または、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはそれらの組合せを介して、外部コンピュータまたは外部記憶デバイスへとダウンロードすることができる。ネットワークには、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジサーバ、あるいはそれらの組合せを含めてもよい。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために、コンピュータ可読プログラム命令を転送する。
【0083】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、または、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語と「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで記述された、ソース・コードまたはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンド・アロン・ソフトウエア・パッケージとして、ユーザのコンピュータ上で部分的に、かつリモート・コンピュータ上で部分的に、またはリモート・コンピュータまたはサーバ上で完全に実行されてもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されるか、または、(例えば、インターネット・サービス・プロバイダを使用したインターネットを介して)外部コンピュータに接続されてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行してもよい。
【0084】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、本明細書において記述される。フローチャート図またはブロック図、あるいはその両方の各ブロック、およびフローチャート図またはブロック図、あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施できることが理解されよう。
【0085】
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサまたはその他のプログラム可能なデータ処理装置を介して実行される命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実施するための手段を作成するように、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、その中に記憶された命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製造品を構成するように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラム可能なデータ処理装置、またはその他のデバイス、あるいはそれらの組合せに対して、特定の方法で機能するように指示することができるものであってもよい。
【0086】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラム可能な装置、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック、あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実施するように、コンピュータ実施プロセスを作り出すべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイス上にロードされて、コンピュータ、その他のプログラム可能な装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0087】
本明細書における、本発明の「一実施形態」または「実施形態」、ならびにそのその他の変形形態への言及は、その実施形態に関連して記述される特定の特徴、構造、特性などが、本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、「1つの実施形態において」または「一実施形態において」という句の出現、ならびに本明細書全体を通して様々な場所に現れるその他の任意の変形形態は、必ずしもすべてが同じ実施形態を指すとは限らない。しかしながら、本明細書で提供される本発明の教示が与えられれば、1つまたは複数の実施形態の特徴を組み合わせることができることを理解されたい。
【0088】
例えば、「A/B」、「AまたはBあるいはその両方」および「AおよびBのうち少なくとも一方」の場合における、以下の「/」、「または~あるいはその両方」、および「の少なくとも一方」のいずれかの使用は、1番目にリストされたオプション(A)のみの選択、または2番目にリストされたオプション(B)のみの選択、あるいは両方のオプション(AおよびB)の選択を包含することが意図されていることを理解されたい。さらなる例として、「A、B、またはCあるいはその組合せ」および「A、B、およびCのうち少なくとも1つ」の場合、そのような言い回しは、1番目にリストされたオプション(A)のみの選択、または2番目にリストされたオプション(B)のみの選択、または3番目にリストされたオプション(C)のみの選択、または1番目と2番目にリストされたオプション(AおよびB)のみの選択、または1番目と3番目にリストされたオプション(AおよびC)のみの選択、または2番目と3番目にリストされたオプション(BおよびC)のみの選択、または3つすべてのオプション(AおよびBおよびC)の選択を包含することを意図している。このことは、リストされている項目の数だけ拡張できる。
【0089】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実現形態のアーキテクチャ、機能、および動作を説明している。この点について、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。いくつかの代替的な実現形態においては、ブロックに示されている機能は、図に示されている順序とは外れて発生する場合がある。例えば、連続して示される2つのブロックは、実際には1つのステップとして達成されてもよく、同時に、実質的に同時に、部分的または全体的に時間的にオーバーラップして実行されてもよく、あるいは、ブロックは、関与する機能に応じて、逆の順序で実行されてもよい。ブロック図またはフローチャート図、あるいはその両方の各ブロック、およびブロック図またはフローチャート図、あるいはその両方におけるブロックの組合せは、指定された機能または行為を実行するか、または専用ハードウエアとコンピュータ命令の組合せを実行する、専用ハードウエア・ベース・システムによって実現できることにも留意されたい。
【0090】
システムおよび方法の(例証的であり、限定的ではないことを意図する)好ましい実施形態について説明してきたが、上記の教示に照らせば、当業者によって修正および変形を行うことができることが注記される。したがって、添付の特許請求の範囲によって概説されるように、本発明の範囲内にある開示された特定の実施形態において変更がなされ得るものと理解されたい。特許法が要求する詳細さおよび具体性をもって、本発明の態様について説明したが、特許証によって権利を主張し、保護されることを望むものは、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18