JP6523354B2 - 改善されたインターフェースを備えるステートマシンビルダー及び状態非依存イベントの処理 - Google Patents

改善されたインターフェースを備えるステートマシンビルダー及び状態非依存イベントの処理 Download PDF

Info

Publication number
JP6523354B2
JP6523354B2 JP2017021799A JP2017021799A JP6523354B2 JP 6523354 B2 JP6523354 B2 JP 6523354B2 JP 2017021799 A JP2017021799 A JP 2017021799A JP 2017021799 A JP2017021799 A JP 2017021799A JP 6523354 B2 JP6523354 B2 JP 6523354B2
Authority
JP
Japan
Prior art keywords
data
state
event
container
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017021799A
Other languages
English (en)
Other versions
JP2017142798A (ja
Inventor
アンドリュー レイマン,
アンドリュー レイマン,
アダム ボスワース,
アダム ボスワース,
タチアナ マムト,
タチアナ マムト,
Original Assignee
セールスフォース ドット コム インコーポレイティッド
セールスフォース ドット コム インコーポレイティッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by セールスフォース ドット コム インコーポレイティッド, セールスフォース ドット コム インコーポレイティッド filed Critical セールスフォース ドット コム インコーポレイティッド
Publication of JP2017142798A publication Critical patent/JP2017142798A/ja
Application granted granted Critical
Publication of JP6523354B2 publication Critical patent/JP6523354B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • G06F11/328Computer systems status display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3438Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Hardware Design (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Description

優先出願
本出願は、「THROTTLING EVENTS IN ENTITY LIFECYCLE MANAGEMENT」と題する2016年2月10日出願の米国仮特許出願第62/293,738号(代理人整理番号:SALE 1143-1/1686PROV)に基づく利益を請求した、「THROTTLING EVENTS IN ENTITY LIFECYCLE MANAGEMENT」と題する2016年8月18日出願の米国特許出願第15/240,729号(代理人整理番号:SALE 1143-2/1686US)に基づく利益を請求している。上記優先権主張の基礎となる出願及び仮出願は、PCT規則で許可された全範囲を参照してここに組み込む。
関連出願
本出願は、「SIMPLIFIED ENTITY LIFECYCLE MANAGEMENT」と題する2015年11月9日出願の米国特許出願第14/936,141号(代理人整理番号:SALE 1130-3/1644US)に関連している。当該関連出願の関連部分は、本出願に全体的に取り込まれる。
本出願は、「SIMPLIFIED ENTITY ENGAGEMENT AUTOMATION」と題する2015年11月3日出願の米国特許出願第14/931,658号(代理人整理番号:SALE 1131-3/1645US)に関連している。当該関連出願の関連部分は、本出願に全体的に取り込まれる。
開示される技術は、一般的に、イベントとして扱われる、IoT(Internet of Things)装置からのメッセージを処理するための装置構造に関し、特に、当該構造を実施するステートマシン装置を構築するために、分かりやすく、直観的で、スケーラブルな、容易にコード化できるアプローチを提供することに関する。
本章で議論される主題は、本章における言及の結果、単なる先行技術と考えるべきではない。同様に、本章で言及された、或いは、背景として提供された主題に関連する課題は、先行技術で既に認識されたものと考えるべきではない。本章における主題は、単に、異なるアプローチを表しているだけであり、それ自体は、クレームされる技術の実施に対応していても良い。
今日の世界では、一般に「ビッグデータ」と言われる膨大なデータ量が扱われている。何百万ものインターネットユーザに応対し管理する、FacebookTM、InstagramTM、TwitterTM、銀行のウェブサイトといったウェブアプリケーション、或いは、Amazon.comTM、eBayTMといったオンラインの小売店さえも、エンドユーザにリアルタイムな体験を提供できるよう、できるだけ早く大量のデータを摂取するという課題に取り組んでいる。
他に、ビッグデータに大きく貢献するものとして、IoT(Internet of Things)と呼ばれる概念及び理論的枠組がある。IoTとは、概して言えば、無線接続及び有線接続を通じて、互いに作用し合い、また、新たなアプリケーション又はサービスを生成する他の物体又は対象と協力することができる多種多様な物体又は対象から成る環境の中で、広く存在するものである。これらのアプリケーション又はサービスは、スマートシティ(地域)、スマートカー及びモビリティ、スマートホーム及び支援された生活、スマート産業、公共の安全、エネルギー、環境保護、農業、観光といった分野に存在する。
現在、こうしたIoTアプリケーション又はサービスは、非専門家にもより利用しやすいものにする必要がある。IoTエコシステムが、実質的なプログラミング経験を必要とするハイテク製品に依存しているために、これまで、高価値の非技術的な領域の知識を有する非専門家は、IoTエコシステムの周辺から応援してきた。こうしたことから、高価な技術コンサルタントに頼らずに、独自に、ビッグデータの計算と分析を組み合わせて利用する、非専門家の能力を増加させることが必要となってきた。
開示される技術は、エンティティとの相互作用(interaction)を多段階的に進行させるためのステートマシン装置を構築する宣言的フレームワークにおいて、ローカライズされた状態を提供する。状態のローカライズによって、状態定義、状態遷移トリガー、状態遷移条件、状態遷移動作といった、これまで複雑であったステートマシン装置の様々な要素及び部品を指定する、より単純な規則ベースのオーサリングツールの提供が可能となり、それによって、上記宣言的フレームワークは、広範囲のアプリケーションに対して繰り返し使用できる。一度定義されると、ステートマシンは、非技術者ユーザによって提供された宣言的入力に基づいて、自動的に構築、生成、実施される。
多くの条件がマトリックスを用いて記述することができる。マトリックスには、アプリケーションのエンティティとの相互作用を多段的に進行させるためのプロファイル又はローカル変数に対して、適切なテストを記述することで生成されたイベントが含まれる。プロファイルには、オーケストレーションの対象についての現在の情報が含まれる。マトリックスは、一方で、以前は明示的な状態によって定義された状態定義、状態遷移トリガー、状態遷移条件、状態遷移動作に関連する大多数の条件を対象としつつ、ステートマシンのフォームを縮小するために、スロットル(throttling)、統合イベント、及び、プロファイル及びローカル変数に対して記述されたテストを組み合わせることができる。一度定義されると、イベント、プロファイル、状態の組み合わせは、非技術者ユーザによって提供される宣言的入力に基づいて自動的に生成及び実施されるステートマシンを単純化する。
したがって、ビッグデータの計算及び分析タスクを実行するために、単純、容易にコード化可能な宣言的言語ベースの解決法を使用する、システム及び方法を提供する機会が生じる。収益の増加、ユーザの定着率の増加、ユーザの関与及び経験の向上が得られる可能性がある。
詳細な説明及び付随する図面で後述する、典型的な、限定されない実施例の様々な側面について、基本的又は一般的な理解を助けるために、簡単な概要をここに述べる。ただし、本概要を広範囲に亘る又は網羅的な概観とすることは意図していない。代わりに、本概要の唯一の目的は、以下に続く様々な実施例のより詳細な説明に対する前置きとして、簡単な形で、幾つかの典型的な限定されない実施例に関して、幾つかの概念を提示することである。
これらの技術的な課題に対処するために、開示される技術は、エンティティとの相互作用を多段階的に進行させるためのステートマシンを実施する宣言的フレームワークを提供する。宣言的フレームワークは、状態定義、状態遷移トリガー、状態遷移条件、状態遷移動作といった、複雑なステートマシンの様々な要素及び部品を指定するために使用可能な簡単な規則ベースのオーサリングツールを提供することから、広範囲のアプリケーションに対して繰り返し使用できる。一度定義されると、ステートマシンは、非技術者ユーザによって提供された宣言的入力に基づいて、自動的に生成及び実施される。
開示される技術には、人間−機械の相互作用に依存せずに機械によって生成された機械生成イベントを処理するワークフローステートマシンにおいて、複数のケース−ステータス状態でケース−ステータス状態を表示することと、及び、第1イベントの後の少なくとも第1ケース−ステータス状態の間に、入力された第2イベントを無視するか、又は、処理するかを決定するイベントフィルタリング条件をメモリに記録することが含まれる。また、本技術には、イベントフィルタリング条件の、一定の期間内の回数に制限を指定する整数のカウントパラメータであって、当該制限を超えた、合致する特徴を持った追加のイベントは無視又は放棄され、当該カウントパラメータを初期化すること、入力された機械生成イベントを処理する命令をワークフローエンジンにロード(load)すること、ケース−ステータス状態及びイベントフィルタリング条件に応じて選択された命令を実行することも含まれる。
開示される技術の他の側面及び利点は、以下に続く図面、詳細な説明、請求項に見ることができる。
図面では、類似する参照符号は、一般に、様々な図に亘って同じ部品を参照している。また、図面は、必ずしも縮尺通りでなく、むしろ一般に、開示される技術の原理を表現することに重点が置かれている。以下の説明では、開示される技術の様々な実施例を、以下の図面を参照して述べる。
図1は、典型的なIoTプラットフォームを示す図である。
図2は、開示される技術の一実施例に従って、図1に示す典型的なIoTプラットフォームの例に類似した、IoTプラットフォームによって使用されるストリーム処理フレームワークを示す図である。
図3は、エンティティとの相互作用の自動的な多段的処理を実施するステートマシンの一実施例を示す図である。
図4A、図4B、図4Cは、図3に示すステートマシンを作成するための宣言的入力を受け付けるデータエントリカラムナ(data entry columnar)の例を示す図である。
図5A、図5B、図6A、図6Bは、図3に示すステートマシンに対するスロットル規則を追加するための宣言的入力を受け付けるデータエントリカラムナの例を示す図である。
図7は、図4Bのデータエントリカラムナの例に追加されるスロットルの例を示す図である。
図8Aは、非プログラミングユーザ向けの、一定の期間内に発生する指定された数のイベントをフィルタリングするために、機械生成イベントを処理するケース−ステータス状態を用いて、エンティティ管理ワークフローの作成を単純化するフローチャートの実施例を示す図である。
図8Bは、非プログラミングユーザ向けの、エンティティ管理ワークフローの作成を単純化するフローチャートのサーバ側の実施例を示す図である。
図8Cは、非プログラミングユーザ向けの、エンティティ管理ワークフローの作成を単純化する典型的な方法のクライアント側の実施例を示す図である。
図9は、非プログラミングユーザ向けの、1回のみの期間内で、エンティティ管理ワークフローの作成を単純化する典型的な方法の実施例を示す図である。
図10は、開示される技術の1以上の実施例に従って、図1のIoTプラットフォームとの統合に適した典型的なマルチテナントシステムのブロック図である。
図11は、ワーカーノードの全てのプロセッサコアを利用する複数の物理スレッドを含むワーカーティア(worker tier)における、ワーカーノードの一実施例を示す図である。
図12A、図12Bは、利用可能な物理スレッドのカウントが論理的並列スレッドの設定数と等しい又はそれを超える場合、パイプライン内のバッチを同時に処理する一実施例を示す図である。
図13A、図13B、13Cは、利用可能な物理スレッドが論理的並列スレッドの設定数未満の場合、パイプライン内のバッチを順番に多重化(multiplex)する一実施例を示す図である。
図14は、バッチの多段階的処理の一実施例を示す図である。
図15は、準リアルタイム(NRT)データストリームの多段階的処理における強力な順序付け(strong ordering)を提供するフローチャートの一実施例を示す図である。
以下の詳細な説明は、図面を参照して行われる。実施例は、開示される技術を説明するために記述されるのであって、請求項によって定義される本技術範囲を限定することは意図していない。当業者は、以下に続く説明について様々な均等物を認識するであろう。
議論は以下のように整理される。まず初めに、本議論を通して使用される専門用語の説明が提供され、次に、様々な実施例によって対処される技術的課題及び提供される技術的解決法の幾つかを記載した序論が述べられる。次に、幾つかの実施例の高次の説明について、構造上のレベルで議論される。また、エンティティ管理ワークフローを実施するステートマシンが説明される。更に、幾つかの実施例で使用されるユーザインターフェースの図が提示される。次に、システムを実施するための、より焦点を絞った動作について、データエントリモデル、遷移トリガー、条件定義と一緒に、議論される。最後に、幾つかの特定の実施例について議論される。
<専門用語>
エンティティ:エンティティとは、現実又は物理的世界のイベントに反応すると共に、環境について検知されたデータ及び情報を交換することで、情報の転送、分析、応用、通信に関してサービスを提供するために、他の物体又は対象と、及び、環境と相互作用及び通信を行う物体又は対象として定義される。エンティティの例としては、人間、オンラインソーシャルネットワーク、無線又は有線センサー、スマートフォン、スマートウォッチ、アプリケーション、パソコン、ノートパソコン、タブレット、IP電話、サーバ、アプリケーションサーバ、カメラ、スキャナー、プリンター、RFIDタグやRFIDリーダー等の近距離通信装置、車両、生物医学機器等が挙げられる。本出願では明瞭にするために、幾つかの実施例において、単数の「エンティティ」及び複数の「エンティティ」が区別無しに使用される。本出願については、幾つかの実施例において、「エンティティ」は、「データソース」、「ユーザ」、及び、その他の行為者である。
IoTプラットフォーム:ここで開示される「IoT(Internet of Things)プラットフォーム」とは、リアルタイム、又は、しばしば少ない待ち時間を伴う準リアルタイムで、複数のエンティティから、大量のデータを収集及び処理する統合された環境として定義される。幾つかの例では、リアルタイム又は準リアルタイムの分析を生成するために、処理ロジックをデータに適用することができる。一実施例では、IoTプラットフォームは、データマイニング、機械学習、統計的処理、予測分析、時系列分析、規則ベース処理、複雑なイベント処理、パターン検出、相関関係等の計算タスクを行うことで、ストリームモードとバッチモードの組み合わせに対する計算を利用して、バッチ及びオフラインの分析を用いて総計を定期的に生成し、リアルタイムのデータストリームからの結果を置き換え、リアルタイムの分析を生成する統合フレームワークとして定義される。一実施例では、IoTプラットフォームは、1ノード、1秒毎に、100万タプル(tuple)の処理オーダーという高スループットを提供する。別の実施例では、IoTプラットフォームは、標準的なグラフ、棒グラフ、図表、重なり合った解説画像といった、GUI及び/又はAPIベースのツールを用いて、豊かな視覚化という形でエンドユーザに識見(insight)を提供する。
準リアルタイムデータストリーム:準リアルタイムデータストリーム(NRT)は、エンティティによって生成される時に登録されるイベントの収集物として定義される。一実施例では、NRTデータストリームは、データタプルの無制限のシーケンスである。幾つかの実施例では、NRTデータストリームは、1秒あたり100万イベント又はタプルの発信率を有する。
イベント:イベントとは、出来事についての情報を伝達する識別可能なデータ単位である。一実施例では、イベントは、エンティティに関する情報を提供することもできる。イベントは3つの側面を持つことができる。すなわち、イベントが発生した時を示すタイムスタンプ、イベントについての様々な属性を示す一連の次元(dimension)、イベントに関連する一連の測定基準(metrics)である。イベントは、キー入力、マウスクリック等、その他様々なものが考えられるユーザによって発生されたイベントがなりえる。システムによって発生されたイベントには、統計(例えば、バイト数あたりの待ち時間等)、プログラムの読み込み及びエラー等、その他に様々なものが考えられる。一実施例において、イベントには、ネットワークフロー変数、装置情報、ユーザ及びグループ情報、アプリケーションについての情報(例えば、リソース状態、変数、カスタムトリガーイベント)が含まれる。イベントは、典型的には、ネットワークトラフィック、特定のエラー条件や信号、交差した閾値、累積したカウント等のNRTデータストリーム内で認識可能な、メッセージ、トークン、カウント、パターン、値、マーカーの何れかを表す。PardotTMのようなアプリケーションとユーザの典型的な相互作用は、セッションとの関連で発生する一連のイベントを処理する。注目すべき主なイベントとして次のものがある。(a)ログイン―ユーザを認証するため、ホストサービスへユーザ信用証明物(credential)を提供する。(b)アプリケーショントランザクション―一連のアプリケーションレベルのトランザクション(例えば、リード(lead)の追加、又は、新たな動作の定義)を実行する。(c)ログアウト―このイベントは、サーバとのセッションを終了させる。幾つかの実施例では、ディープ・パケット・インスペクションのロジックが、イベントを識別するために生のイベントデータを探知(track)し、それらのイベントデータをイベントレポジトリに格納する。幾つかの実施例では、このアプリケーションは、「イベント」を「データ」、「データ」を「イベント」と、区別無く称する。様々なエンティティによって、又は、様々なエンティティについて生成されたイベントの他の例としては、着用可能なセンサーからの遠隔測定、スマートウォッチからのデータ、(Microsoft WordTM等の)アプリケーションの機能を用いてユーザによって生成されたデータ及び/又はメタデータ、旅を開始する又は完了する運転者によって使用されるGPSから生成された短期又は長期の旅行データ、速度又は位置情報を報告する車両によって生成されるデータ、センサー信号を報告する医療機器によって生成されるデータ等が含まれる。
パイプライン:パイプラインは、一連のグループ化された相互に関連するイベントとして定義される。一実施例では、グループ分けは、タプル・バイ・タイプベース(tuple by type basis)で行われる。別の実施例では、グループ分けは、バッチ毎に(batch by batch basis)行われる。
オンラインソーシャルネットワーク:「オンラインソーシャルネットワーク」は、ユーザの共同体又は個人、及び/又は、他のエンティティが、(インターネット等の)コンピュータネットワークを通じて情報、リソース等を共有できるよう構成された、ソフトウェア、プロトコル及び/又はハードウェアの何らかの組み合わせとして定義される。オンラインソーシャルネットワークは、相互作用、関与、情報共有を育むウェブサイト、ブログ、フォーラムといったプラットフォームを使用する。オンラインソーシャルネットワークの例には、FacebookTM、TwitterTM、YouTube(登録商標)、FlickrTM、PicasaTM、DiggTM、RSSTM、BlogsTM、RedditTM、LinkedInTM、WikipediaTM、PinterestTM、Google Plus+TM、MySpaceTM、BitlyTM等が含まれる。幾つかの実施例では、このアプリケーションは、「オンラインソーシャルネットワーク」を「ソーシャルネットワーク」、「ソーシャルメディアサイト」、「ソーシャルネットワーキングサービス」、「ソーシャルメディアソース」、「ソーシャルネットワーキングエンティティ」と区別無く称し、またその逆もあり得る。
Application Programming Interface:「API(Application Programming Interface)」は、インターフェースのタイプを含む、一連のクラスに属するコードライブラリ、メソッド及びフィールドのパッケージ化された収集物として定義される。APIは、開発者及びプログラマーが、関連するクラスをインポートし、クラスのインスタンス化及びメソッドとフィールドの呼び出しを行う命令文(statement)を記述するだけで、自身のソフトウェア開発に当該クラスを使用することができる方法を定義する。別の実施例では、APIは、互いに通信するソフトウェアの構成要素によりインターフェースとして使用されることを意図したソースコードベースの仕様である。APIには、ルーチン、データ構造、オブジェクトクラス、変数に関する仕様が含まれる。基本的に、APIは、開発者及びプログラマーに、オンラインソーシャルネットワークの基礎となるプラットフォーム性能及び機能にアクセスするためのインターフェースを提供する。例えば、Twitterの検索APIは、検索又はユーザ名を通じてTwitterのデータを順次問い合わせ(ポーリング)する。Twitterの検索APIは、開発者及びプログラマーに、発生したツィートから既存のデータセットへのアクセスを与える。検索APIを通じて、開発者及びプログラマーは、検索基準に合ったツイートを要求する。検索基準は、キーワード、ユーザ名、位置、指定場所等が考えられる。別の例では、TwitterのストリーミングAPIは準リアルタイムでツイートが投稿された時のデータのプッシュ(push)である。TwitterのストリーミングAPIで、開発者及びプログラマーは、一連の基準(例えば、キーワード、ユーザ名、位置、指定場所等)を登録し、ツイートが当該基準に合致する場合、登録された基準は、直接、開発者及びプログラマーにプッシュされる。更に別の例では、Twitter Firehoseが、準リアルタイムでデータを開発者及びプログラマーにプッシュし、設定された基準に合致する全てのツイートの配信を保証する。
アプリケーション:アプリケーションは、URL(Uniform Resource Locator)を介してアクセスされるネットワークホストサービスを指す。例としては、内部のエンタープライズ・アプリケーションと共に、SaaS(Software as a Service)製品、PaaS(Platform as a Service)製品、IaaS(Infrastructure as a Service)製品が挙げられる。アプリケーションの例としては、Salesforce1 PlatformTM、Sales CloudTM、Data.comTM、Service CloudTM、Desk.comTM、Marketing CloudTM、PardotTM、Wave AnalyticsTM、Box.netTM、DropboxTM、Google AppsTM、Amazon AWSTM、Microsoft Office 365TM、WorkdayTM、Oracle on DemandTM、TaleoTM、YammerTM、ConcurTMが挙げられる。一実施例では、アプリケーションは、標準的なグラフ、棒グラフ、図表、重なり合った解説画像といった、GUI及び/又はAPIベースのツールを用いて、豊かな視覚化という形でエンドユーザに識見を提供する。
エンティティ体験動作:「エンティティ体験動作」は、通常、熟練オペレータ(例えば、会社、組織)の代わりに、効果的なユーザ管理及びリソースプロビジョニング、アプリケーションのライフサイクル管理、ユーザの関与、トラフィックの監視、活動の探知、アプリケーションのモデリングに関するプロビジョニングを可能とする、編成された取り組み(orchestrated effort)として定義される。
識別(identification):ここで使用されるように、情報項目の「識別」は、必ずしも当該情報項目の直接の指定を必要としない。情報は、1以上の間接参照(indirection)を通して実際の情報を単に参照することによって、或いは、実際の情報項目を判断するのに十分な1以上の様々な情報項目を識別することによって、ある分野で「識別」することが可能である。また、ここでは、「指定する(specify)」という用語は、「識別する(identify)」と同じ意味で用いられる。
物理スレッド:一度配置(deploy)されると、コンテナは、一連の所謂「物理スレッド」を操作する。物理スレッドは、ワーカーノードのプロセッサコアを利用し、当該ワーカーノードに割り当てられる一連のコードプロセス(例えば、Java(登録商標)プロセス)を内部で実行する。ただし、1コアにつき、物理スレッドは1つのみである。また、物理スレッドは、コンテナの様々な要素及び部品(例えば、エミッタやトランスフォーマー)に対して、一連のタスク又はジョブのロジックを実行する。
ロングテールタスクシーケンス:「ロングテールタスクシーケンス」とは、タスクシーケンスの開始時は適切なサイズであるが、タスクシーケンスが減少するにつれて、過剰となった専用のコンピュータリソースを消費するタスクシーケンスのことである。ロングテールタスクシーケンスの例として、スーパーボウル(Super Bowl)の間に、ゲーム会社から空想のアメリカンフットボールのゲームのトークンが提供されることが挙げられる。スーパーボウル後に空想のアメリカンフットボールへの需要が徐々に減少すると、ゲームトークンの使用も減少する。その結果、電子的にイベントとして受領される、ゲームトークンの買戻し要求数も減少する。しかし、ゲーム会社は、スーパーボウル後、長期間に亘って徐々に買い戻される未使用のトークンを依然として受け入れる。この延長された中休み(lull)は、スーパーボウル中に急増した程にはコンピュータリソースを必要としないことから、ロングテールタスクシーケンスの特徴となり、最初の割り当てよりも少ないコンピュータリソースで動作することが可能となる。
エミッタ:データは、所謂「エミッタ」を経由してコンテナに入る。エミッタは、コンテナのためのイベントタプルのソースであり、イベントタプルをコンテナに取り込む役割を担っている。一実施例では、エミッタは、入力待ち行列からイベントタプルを取り出す。幾つかの実施例では、エミッタは、ユーザ指定の変換機能を備え、入力待ち行列からバイト列を消費し、それらをタプルとして下流のトランスフォーマーに転送する。エミッタは、ワーカーノードの1以上の物理スレッドによって実行される1以上のタスク又はジョブを回収(retrieve)する。
トランスフォーマー:トランスフォーマーとは、コンテナで入力されたイベントタプルを処理し、それをコンテナ内の下流に位置する次の一連のトランスフォーマーへ引き渡す、コンテナの計算装置である。トランスフォーマーは、1以上のタスク又はジョブを下流に引き渡し、典型的には更に変形(transform)されてワーカーノードの1以上の物理スレッドに渡される。

<序論>
非プログラミングユーザ向けの、エンティティ管理ワークフローの生成を単純化するシステム、及び、様々な実施例を説明する。特に、開示される技術には、人間−機械の相互作用に依存せずに機械によって生成された機械生成イベントを処理するワークフローステートマシンにおいて、複数のケース−ステータス状態を表示することが含まれる。当該ケース−ステータス状態の内、(第1イベント後の)少なくとも第1ケース−ステータス状態の間に、入力された第2イベントを無視するか、又は、処理するかを決定するイベントフィルタリング条件がメモリに記録され、イベントフィルタリング条件の、一定の期間内の回数に制限を指定する整数のカウントパラメータが初期化される。当該制限は、それを超えた互いに合致する特徴を持った追加のイベントが無視又は放棄されるというものである。また、開示される技術には、入力された機械生成イベントを処理する命令をワークフローエンジンにロードすること、少なくともケース−ステータス状態及びイベントフィルタリング条件に応じて選択された命令を実行することも含まれる。
IoT(Internet of Things)は、インターネットの新しい革命である。物体又は対象が、自身を認識可能にし、自身についての情報を通知できることで、内容に関連した決定を行う又は可能にすることによって、知能を獲得する。IoTは、ビッグデータを基礎に構築される。PigTMのようなビッグデータの計算及び分析システムは、広範囲に亘るプログラミング技術を持ったソフトウェア技術者向けに設計されているが、多くの組織では、ビッグデータの計算及び分析は、コード開発者以外の領域専門家(例えば、マーケティング担当者、CEO、営業担当者)といった多くの個人にとってアクセス可能である必要がある。加えて、大半のユーザには、ビッグデータを基に完全に開発されたワークフロープロセスを記述する時間がない。
また、エンティティライフサイクル管理動作を実施する現在のIoTアプリケーションは、技術者によって他の技術者向けに開発されることが多く、非技術者ユーザにとっては複雑である。その結果、形式的手法の経験がほとんど無いプログラマーにとって、現在のIoTアプリケーションの有用性は非常に限られている。更に、ほとんどの営業用又は研究用のIoTによる解決法は、柔軟性のあるフレームワークというよりはむしろ、単なるアプリケーションであり、様々な状況及び様々な目的のために使用するには、広範囲に亘る再プログラミングが必要とされるため、本来的にはコード構築を目指すものである。
こうした技術的課題に対処するため、開示される技術は、エンティティとの相互作用を多段階的に進行させるためのステートマシンを実施する宣言的フレームワークを提供する。上記宣言的フレームワークは、状態定義、状態遷移トリガー、状態遷移条件、状態遷移動作といった複雑なステートマシンの様々な要素及び部品の規定に使用できる単純な規則ベースのオーサリングツールを提供するため、広範囲のアプリケーションに対して繰り返し使用可能である。一度定義されると、ステートマシンは、非技術者ユーザによって提供された宣言的入力に基づいて、自動的に生成及び実施される。
今日の我々の世界は、世界経済の各分野を流れるデータのストリームによって生成されるバイナリコードを構成する1と0で成り立っている。それはどれぐらいのデータだろうか?
IBMによれば、2012年では、毎日2.5エクサバイトのデータが生成された。それは、1日で25億ギガバイトのデータである。Facebook単独でも、同年で、1日あたり50万ギガバイトのデータに関与している。データの重要性はますます大きくなっており、米国政府も、データへのアクセスを支援及び分析するために、率先してData.govを開設した。良いニュースとしては、データ処理及び格納費用が、過去十年と比べて1000倍以上減少したことである。しかし、データは一旦格納されると、取り出して使用することが困難である。
こうしたデータの全てはどこから来るのか?明らかな発生源は、昔ながらの記録システム(systems of record)から生成されたデータである。また、新しいビジネス応用モデルであるSaaS(Software as a Service)の急速な適応に見られるように、クラウドソフトウェアからのデータもある。
また、携帯電話、携帯機器、及び、単に物理的世界で監視できる全てのものに設置されたセンサーから、毎秒生成されるデータもある。更に、ソーシャルメディアは最も大きなデータストリームを表しており、それは天文学的な量で生成されている。
文字については忘れて、YouTube、Facebook、Instagram、Twitterといった一般向けのサービスにスマートフォン経由でアップロードされた写真及び動画の全てについて考えてみる。
スマートフォンは、現在、こうしたデータの津波の最も有力な原因である。パソコン及びフィーチャーフォン(スマートフォンではない携帯電話)はどちらも減少し、スマートフォンが、サハラ以南のアフリカでさえ、反対に増加している。そして、スマートフォンのある所にはアプリケーションがある。アプリケーションは実際的に全ての人間の活動(endeavor)のためにある。
アプリケーションは、人間の指、カメラ、運動センサー、GPSアンテナ、Bluetooth(登録商標)アンテナ、ジャイロスコープによって生成される全てのリアルタイムのデータストリームに対するスマートフォンの制御点である。スマートフォンのメーカーが、より多くのセンサー及び機能をこれらの装置に詰め込み続ける一方で、開発者は、我々全てを喜ばせるアプリケーションを構築し続ける。
2015年時点で、成人人口の50%がスマートフォンを所有している。その数は、2020年には80%にまで増加すると思われる。しかし、スマートフォンと同じぐらい感銘を与える、最大の波がまさに形成されている。我々は、物理的世界の「感覚化(sensorification)」に近づこうとしている。安価で、接続された、最小化されたコンピュータ及びセンサーの組み合わせが、スマートな、接続された製品と産業機器の世界を生み出すだろう。
この新しい技術カテゴリは、しばしば、「IoT(Internet of Things)」と呼ばれる。ゼネラル・エレクトリック社は、ジェットエンジン、機関車、MRI装置等の物を含めて、「インダストリアル・インターネット」という用語で、更に一歩先に進んでいる。
IoTは、IT革新の主要な、変換の波を表している。これは、IT主導型の生産性の大躍進の第3の波である。尚、最初の2つの波は、メインフレームとミニコンピュータ、及び、インターネットの出現によってもたらされたものである。言うまでもなく、これらのデータストリームの利用及び分析は、ITとビジネスが次の十数年間に直面するであろう最大の課題を表している。
この大量のデータを説明するために使用される適切な用語は、ビッグデータである。ビッグデータに関しては、伝統的なデータ格納技術は、このように大量で高速のボリュームを扱うにはふさわしくない。そして課題はそこで終わらない。
企業は、こうしたデータの獲得方法だけでなく、検索、分析、視覚化の方法を理解し、、同時に、データを自身の事業及び顧客データに結び付ける必要もある。最終的な目標は、予測分析及びリアルタイムの知的意思決定を行う機能である。これには、記録システムから知能システムへのIT変換が必要とされている。
ビッグデータが出現する前は、ビジネス・インテリジェンス(BI)の概念が既に、1990年代に一般に使用されるフレーズとなっていた。その当時、新しく生まれた多くのBIソフトウェアベンダーも市場に参入した。
BIは、データをビジネスにとって意味のある有用な情報に変形するために必要な方法及びツールを提供した。この時期のBIの役割は、かなり基本的であり、データを収集して整理し、それを提示できる方法で視覚化することであった。
革新は続き、データウェアハウスの導入によって、記録システムから企業データにアクセスするのに要する時間が大幅に短縮された。こうした革新にも拘わらず、コアな課題は残っている。これらのデータウェアハウスをセットアップするには、深い専門的知識が必要とされ、BIツールを使用するには相当な訓練が必要である。
単にビジネスに関わっている人には、まだ、アクセス可能な方法でこれらのツールを使用することはできない。ほとんどのBIツールは、訊こうとする質問が前もって分かっている場合に回答を得るには非常に良くできている。しかし、時には単に、どんな質問をすればいいか分からない場合もある。要するに、これらのツールでは、ビジネスユーザが、識見を、必要とする時に、必要とする方法で、必要とする場所で得ることができない。
幸いなことに、これは全くの課題である。クラウドで全体的に設計され、実行されるデータ分析ツールが、初めて構築されようとしている。ITがハードウェアを提供する、或いは、データプラットフォームをインストールし、設定する必要はない。全ての関連する統合及びスキーマ開発を行うには、数カ月から数日に及んだ。この新しく発見された敏捷性によって、事業分野からの要求毎にITが関与することが必要だった、伝統的な2段階のサービスビューローモデルを取り除く技術革新が可能となった。
これらの革新により、ビジネスユーザがデータにアクセスできるだけでなく、その分析に参加できるように、データの民主化(democratization)のための道が開かれつつある。このことは、アナリスト、データサイエンティスト、ITを必要としない、回答への直接的なアクセスを持ったセルフサービスモデルを意味している。ビジネスユーザは、ほぼ瞬間的に回答を発見し、共有することができる。データについてどんな質問をすべきか事前に知らなければならない難しい要件は存在しない。ビジネスユーザは、データセットを調査して、識見を得るための質問をすばやく打ち出すことができる。
更に、この民主化は、モバイルによって促進される。スマートフォン、タブレット、ウェアラブル端末を用いて、ワーカーは、いつでもどこででもデータへアクセスし、緊急のビジネス上の質問に対する回答を直ちに得ることができる。データの民主化は、知能システムの構築を目指す行程において、なくてはならない段階となった。
データの民主化の成果が十分に得られる一方で、プロセス自体は主に、ビジネスユーザに、昔ながらの記録システム及びクラウドベースのビジネスアプリケーションからのデータへのアクセス及び分析の機能を提供する。これらの新しいBIツールの中にはせいぜいよくて、準リアルタイムのアクセスとデータ分析を提供できるものがあるくらいである。しかし、これらのBIツールは、スマートフォン、ウェアラブル端末、物理的世界において爆発的に増加しているセンサーから発生した、実際のリアルタイムのデータストリームを獲得し、分析するようには設計されていない。
リアルタイムのデータストリームは、たいていのBIツール及びプラットフォームが利用する後ろ向きの(backward-looking)履歴データとは全く異なる情報を伝達する。リアルタイムデータは、腐り易い。すなわち、検知されるだけでなく、それについて行動が起こされる必要がある。「識見までの時間(time to insight)」の概念は、知能システムの重要な性能指標の1つとして挙げられる。この識見には、全体的に新しいレベルのパッケージ化及び消費が必要とされる。情報は、状況に応じて直ちに、我々が日常生活で晒されているデータの不協和音を通り抜けるように伝達される必要がある。
知能システムは、データ識見によって何をすべきか、及び、適切なワーカーに対してその人の仕事上の役割及び組織内での役割に基づいてどのようにデータ識見を伝達すればよいかを分かる必要がある。こうしたシステムは、設定、立ち上げ、実行が容易な点で、現代のBIツールと同様に民主的である。また、知能システムは、我々が仕事で日々直面している毎日のデータの大洪水に対処するよう設計されている。ソーシャルメディア、トラフィック、ニュース集約アプリケーション等の消費者アプリケーションは、我々に最も重要である事柄に対してより知的に対処する際に役立つ。
知能システムに接続されるアプリケーションに対するハードルは、消費者アプリケーションと同様に高い。これは、ワンクリックでのインストール、美しくシンプルなユーザインターフェース、自分で選択できるモバイル機器を介した利用可能性を意味している。リアルタイムデータストリームの利用及び分析によって、リアルタイムでのアクションだけでなく、これから起こることを予測する機能へと拡充される。このことは、伝統的には、統計及び計算モデリングから視覚化及び報告までの全てを扱うデータサイエンティストの領域であった。データサイエンティストによって生成されるモデルは、たいていは、過去の歴史的な傾向を見て、そのデータを使ってパターン及び将来の傾向を予測するものであった。大量のリアルタイムデータストリームを対象とする計算モデルを構築する試みは、企業にとって重要な人的資源の課題を提示する。
リアルタイムのビッグデータストリームの分析と、それを使って何かをすることの両方を行うデータサイエンティストを有する会社はほとんどない。多くの組織は、現在募集中のポストを、資格要件を満たした人材で単に埋めるということができない。また、大学も、今後何年も需要に合った十分なデータサイエンティストを準備することはないと思われる。しかし、仮に、データを分析し組み立てるデータサイエンティストを配置したとしよう。その次はどうか?どうやってこれを利用可能なものに変換するか?どうやってライン管理者や取締役を、正しい決定を行うために、その分析の意味を理解するよう訓練するのか?
知能システムは、近い将来にデータサイエンティストに取って代わることはないだろうが、こうしたシステムは、データサイエンティストとして大量の従業員を雇用する必要を緩和する方向へ大きな役割を果たすと思われる。知能システムは、収集された知恵、専門的技術、組織について得られた識見を、知的な意思決定がこれら全ての合計となるように、利用し、拡大または縮小(scale)する。収集された知能は、ルールエンジンにおけるルールのように表現可能である。これらは、ビジネスユーザに、この収集された知能を受け取り、リアルタイムデータストリームを評価及び分析して知的意思決定を生む、単純で論理的なビジネスルールを構成することを可能にする。
データサイエンスには、データを用いて回答可能な量的な質問を策定する(formulating)処理、当該データを収集及びクリーニングする処理、当該データを分析する処理、質問に対する回答を関連する聞き手に伝える処理が含まれる。
企業が知能システムから得た初期の成果の多くは、簡単に成果が得られるもの、すなわち、上述した単純なビジネスルールの表現から得られる報酬である。しかし、組織が知能システムから得る識見が大きくなるにつれて、且つ、その諸要素(equation)の一部となる装置及びセンサーが増えるにつれて、アルゴリズムと機械学習の役割が知的意思決定において果たす役割が大きくなるだろう。
企業は、全てのデータを取捨選択するのに十分なビジネスアナリスト及びデータサイエンティストを雇用できないため、人工知能へますます注目するものと思われる。クレジットカード詐欺の検知が良い例であり、かなり精巧になってきている。
人工知能によって、詐欺に詳しい専門家への需要が完全に無くなるわけではないが、人工知能によって、人間による調査を必要とする疑わしい事例の数が大幅に減少している。
組織によるビッグデータへの取り組みが活発になるにつれて、多くの検討すべき事項が生じるだろう。適切な人材、適切なツール、適切な方法が必要となる。今日集まる技術は、データセットのソース及び大きさにおいて、本質的に無限である。如何に深い質問であっても、その場その場で対処する準備ができている。
これを超えた次の段階は、顧客に、どんな質問を彼らが尋ねる必要があるかを伝えることを開始する知能システムである。そこにたどり着くためには、知能システムの青写真が必要となるだろう。
データストリームのソースは、スマートフォン、及び、FitbitやApple Watchといった消費者向けウェアラブル端末等のモバイル機器からリアルタイムで発信している複数の信号である。これらの信号に対する制御点は、アプリケーションである。
アプリケーションは、人間の入力とこれらの装置に内蔵されたセンサーによって生成された生データの背景にコンテキストを置くものである。
Wikipediaによれば、センサーは、その周囲の環境のある特徴を感知又は検知することを目的とする変換器である。センサーは、イベント又は変化を大量に検知し、対応する出力を、一般的には、電気信号又は光信号として提供する。
これを全てまとめて結び付けることが、ディジタル配管(plumbing)、又は、アプリケーションプログラミングインターフェイス(API)である。この概要で表されるデータストリームフローのあらゆる重大な要素に沿って、APIは、システムにおける、高速で大容量のデータの端から端までの伝達を可能にするだろう。APIという用語は、IT以外では一般的な用語ではないかもしれないが、今日のビジネス通信においてウェブやインターネットを説明する技術用語が共通語であるのと同様に、いずれは一般的になると思われる。
データストリームの主たる噴出源(gusher)は、接続された消費者向け製品と産業機器及び機械である。これらのリアルタイム信号は、自動車内、家庭内、貴重品、防犯システム、重要な物理的環境内のどこかに設置された製品センサーから発信される。
産業インターネットからの信号は、監視、保守、修理を要する機器又は機械の何らかの部分に設置されているセンサーから発信される。それは、物理的環境内のセンサーによりディジタル方式で監視可能な信号以外の何らかの信号である。知能システムは、これらの信号を識別し、利用できなければならない。
大量で高速のデータ信号を獲得(capture)するには、これらの信号入力を監視するために、「ディジタル番犬」が必要となる。仮にこれらのディジタル信号に何か重要なことが起きた場合、イベントが登録される。イベントのごく簡単な例としては、自動車内で温度センサーが作動して、外の凍りそうな状態を警告する場合が挙げられる。
知能システムは、これらのデータストリームを摂取(ingest)し、監視する技術を必要とする。ディジタル信号によって生成されたイベントは、メッセージを通じて配信され、消化(digestion)処理が計画通りに進められるように、システム内を進む。ここで、フィルターが、これらのデータストリームを更に分析するという仕事を開始できる。システムが適切に機能するためには、データフローの増大する容量及び速度に対処できなければならず、また、当該システムで故障やクラッシュが発生した場合でも、データストリームは失われてはならない。
データが獲得され、処理されると、消化段階に移行する。ここで、幾つかの魔法が起こり始める。これには、リアルタイムデータストリームの監視及び分析処理が含まれる。データが分析され、処理されると、どこかに置いておく必要がある。
流入するデータストリームは、構造化照会言語(SQL)を用いたリレーショナルデータベース等の伝統的なデータベースストレージには適さない。これは、知能システムの必須要素である、非常に大きなデータセットを処理し、格納することができる特別な技術を要する。
このシステムのもう1つの鍵となる構成要素は、データストリームの分析に適用されるビジネスルールの形でフィルターを適用する機能である。これによって、組織の収集された知恵と専門知識をシステムに直接表現することで、人為的エラーを排除する処理が開始される。機械学習及びアルゴリズムの形での人工知能もまた、更なる分析のために、これらのデータストリームに適用することができる。
企業データは、今日の企業ITの主流である記録システム及び関与システム(systems of engagement)で構成される。ITが、メインフレーム及びミニコンピュータからパソコン及びインターネットへ移動した際、記録システムは、主として、紙及び手動で処理されていたものをディジタル時代へ移行することに関連してきた。また、記録システムは、日々の活動を自動化し、製品によってその情報を獲得し、本質的には歴史文書であるものを報告するというものであった。
関与システムは、顧客、パートナー、従業員との会話及び相互作用の社会的性質に焦点を当てる点で、記録システムとは根本的に異なる。ソーシャルメディア、及び、ITを一般消費者向けにすることは、こうした会話がどのように生じ、どんなチャネルを通っているかを形作る。ドキュメントベースのディジタルの人工物の代わりに、関与システムは、時間、コンテキスト、場所の要素を追加する。記録のためのシステムは無くなることはない。単に、企業が、関与システムとの次世代の通信及び協力を含むことが必要になるだけである。
関与システム及び記録システムは、データストリームへのコンテキストの提供、フィルタリング、分析をする上で欠かせない要素である。もし顧客、パートナー、従業員の全体像を持っていなければ、データストリーム及び出力を理解することはできない。これらのシステムは、知能システムによってもたらされる分析的な識見及び知的意思決定を解明するには不可欠である。
企業のコンテキストを摂取、消化し、データストリームに適用した後、知的出力が生成され、適切な形で、適切な時期に、適切なチャネルへ配信される。第1の2つのチャネルは、ダッシュボードと識見である。ダッシュボードは、新会社の戦略を打ち出す、既存の市場プログラムを調整する、知的意思決定に基づく規則を改良するといった行動を、人間が探索し、実施できるように、何が起きていて、何が起こったのかについて、視覚化及びコンテキストを操作(drive)する。識見は、リアルタイムの意思決定の配信に、より依存する。それがダッシュボードと分析的識見の重要な違いである。ビジネス規則で、組織の収集された知識及び専門的知識を表現することは、簡単に回避できる悪い決定の排除に大いに役立つ。信号が増加し、データストリームが知能システムに流れ込む時に、データサイエンティストは、予測可能な方法で知的意思決定をもたらす機械学習アルゴリズムを生成するために、自身の方法及びモデルをより良く適用することができる。
データストリームの旅の最終段階に移ると、企業は、ビジネスの変換を開始するために、知的出力の成果の適用を開始することができる。我々の中心となる前提は、どのアプリケーション、装置、接続された製品、センサーの背後にも顧客がいるということである。ここに開示されるIoTプラットフォームの役割は、販売、顧客サービス、マーケティング、コミュニティ、アプリケーション、分析を通して顧客を従事させるユーザ成功プラットフォームに、装置データを接続することである。
開示される技術は、非プログラミングユーザに向けに、コンピュータによって実施されるシステムを用いて、エンティティ管理ワークフローの生成の単純化に関する。開示される技術は、データベースシステム、マルチテナント環境、或いは、OracleTMに準拠したデータべース実装、IBM DB2 Enterprise ServerTMに準拠したリレーショナルデータべース実装、MySQLTM又はPostgreSQLTMに準拠したリレーショナルデータべース実装、Microsoft SQL ServerTMに準拠したリレーショナルデータべース実装、或いは、VampireTMに準拠したリレーショナルデータべース実装、Apache CassandraTMに準拠したリレーショナルデータべース実装、BigTableTMに準拠したリレーショナルデータべース実装、HBaseTM又はDynamoDBTMに準拠したリレーショナルデータべース実装といったNoSQL非リレーショナルデータベース実装を含む、何らかのコンピュータによって実施されるシステムに関連して実施可能である。
更に、開示される技術は、2以上の別々に区別され、互いに協力し、通信するコンピュータによって実施されるシステムを用いて実施可能である。開示される技術は、プロセス、方法、機器、システム、装置、コンピュータ可読命令又はコンピュータプログラムコードを格納するコンピュータ可読記憶媒体、或いは、コンピュータ可読プログラムコードが内部で具体化されているコンピュータ利用可能媒体を備えるコンピュータプログラム製品といったコンピュータ可読媒体を含む、多数の方法で実施可能である。
また、開示される技術は、MapReduceTM、バルク同期プログラミング、MPIプリミティブといった様々なプログラミングモデル、或いは、Apache StormTM、Apache SparkTM、Apache KafkaTM、TruvisoTM、IBM Info-SphereTM、BorealisTM、Yahoo! S4TMといった様々なストリーム管理システムを用いて実施可能である。

<IoTプラットフォーム及びストリームバッチ処理フレームワーク>
非プログラミングユーザ向けの、エンティティ管理ワークフローの生成を単純化するシステム、及び、様々な実施例を説明する。当該システム及びプロセスは、実施例に従ってシステムの構造上のレベルの略図を示した図1及び図2を参照して説明する。図1及び図2は構造図であるため、説明の明瞭性を高めるため、詳細は意図的に省略されている。図1及び図2の議論は、以下のように整理される。まず初めに、各図面の要素について説明し、その後でそれらの相互接続について説明する。次に、システムにおける当該要素の使用について、更に詳細に説明する。
図1には、典型的なIoTプラットフォーム100が含まれる。IoTプラットフォーム100は、データソース102、入力コネクタ104、ストリームコンテナ106、バッチコンテナ108、リッチコンテクスチュアルデータストア(rich contextual data store)110、オーケストレーションシステム112、出力コネクタ122、アプリケーション123を備える。リッチコンテクスチュアルデータストア110は、様々なストレージノードC1〜C3を備える。オーケストレーション112は、データエントリカラムナ114、探索エンジン115、ライブダッシュボード構築エンジン116、モーフィングエンジン117、トゥイーンエンジン(tweening engine)118、トゥイーンステッパー119、統合開発環境(IDE)121、レンダリングエンジン120を備える。アプリケーション123は、様々なSaaS、PaaS、IaaSの製品で構成される。
図2は、開示される技術の一実施例に従って、図1で示すプラットフォームで使用されるストリーム処理フレームワーク200を表している。フレームワーク200は、データソース102、入力パイプライン204、ストリームコンテナ106、リッチコンテクスチュアルデータストア110、出力パイプライン218を備える。ストリームコンテナ106は、エミッタティア206、スケジューラ208、コーディネータ210、ワーカーティア214を備える。
IoTプラットフォーム100及びストリーミングフレームワーク200の要素の相互接続を以下で説明する。ネットワーク(図示せず)が、データソース102、入力コネクタ104、ストリームコンテナ106、バッチコンテナ108、リッチコンテクスチュアルデータストア110、オーケストレーションシステム112、カラムナ114、出力コネクタ122、アプリケーション123、入力パイプライン204、エミッタティア206、スケジューラ208、コーディネータ210、ワーカーティア214、出力パイプライン218を連絡し、全てが互いに通信し合っている(実線矢印で表示)。実際の通信経路は、パブリック及び/又はプライベートネットワーク上で2地点間とすることができる。データソース102からのデータといった幾つかのアイテムは、間接的に、例えば、アプリケーションストア(図示せず)を介して、伝達される。全ての通信は、プライベートネットワーク、VPN、MPLS回路、インターネット等の様々なネットワーク上で発生し、適切なAPI、及び、REST、JSON、XML、SOAP、JMS等のデータ変換形式を使用することが可能である。全ての通信は、暗号化することができる。通信は、一般に、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、電話ネットワーク(公衆交換電話網(PSTN))、セッション確立プロトコル(SIP)、無線ネットワーク、2地点間ネットワーク、星状ネットワーク、トークンリングネットワーク、ハブネットワークや、EDGE、3G、4G LTE、WiFi、WiMAX等のプロトコルを介したモバイルインターネットを含むインターネット等で行われる。更には、ユーザ名/パスワード、OAuth、Kerberos、SecureID、ディジタル証明書の他、様々な権限付与技術及び認証技術が、通信の安全性を確保するために使用することができる。
図1(IoTプラットフォーム100)及び図2(ストリーミングフレームワーク200)の要素、及び、それらの相互接続についてこれまで説明してきたが、システムについて、以下で更に詳細に説明する。
データソース102は、スマートフォン、WiFiアクセスポイント、センサー又はセンサーネットワーク、モバイルアプリケーション、ウェブクライアント、サーバからのログ、ソーシャルメディアサイト等のエンティティである。一実施例において、データソース102からのデータは、API(Application Programming Interface)を介してアクセスされる。APIによって、センサー、装置、ゲートウェイ、プロキシ、及び、その他の種類のクライアントは、データソース102をIoTプラットフォーム100に、データがそれらから摂取できるように登録する。データソース102からのデータは、構造化データ(例えば、ユーザプロファイル、インタレストグラフ)、非構造化テキスト(例えば、ツイート)、半構造化相互作用ログの形でイベントを含むことができる。イベントの例としては、装置のログ、リンクへのクリック、お勧めの印象、特定のクライアントのログイン数、サーバのログ、ユーザの身元(ユーザハンドル又はユーザIDの時もあれば、ユーザの実名を指す時もある)、ソーシャルネットワークサービス上の各フィードに対してユーザが投稿したコンテンツ、ソーシャルグラフデータ、コメントが以前の投稿、イベント、ニュース記事等に応答して投稿されたかどうかを含むメタデータ等が挙げられる。イベントは、文字列フィールド(又はカラム)、及び、数、文字列、配列、オブジェクトといった本質的に異なる種類の対応する値を表す、JSON(JavaScript Option Notation: JavaScriptは登録商標)、BSON(Binary JSON)、XML、Protobuf、Avro、Thriftオブジェクト等の半構造化データフォーマットをとり得る。JSONオブジェクトは、他の実施例では、ネストすることが可能で、そのフィールドは、例えば、配列、ネストされた配列等の多値をとることができる。
以下に説明するように、準リアルタイム(NRT)データストリーム103は、エンティティによって生成された際に登録されたイベントの収集物である。一実施例では、イベントは、HTTPによって入力パイプライン204まで伝達される。別の実施例では、イベントは、POSTリクエストを介して、入力パイプライン204の代わりに動作する受信器に転送される。例えば、TwitterのFirehose API(Datashift、nTweetStreamer、tiwwter4j等のTwitterの関連会社を通じてアクセス可能)は、ツイートと呼ばれる無制限のタイムスタンプ付のイベントを、ツイート、ユーザ情報、場所、話題、キーワード、リツイート、フォロワー、フォロー、タイムライン、ユーザライン等についてのタイムスタンプデータを含む、こうしたツイートについてのメタデータと共にJSONオブジェクトのストリームとして提供する。これらのJSONオブジェクトは、Apache CassandraTM、GoogleのBigTableTM、HBaseTM、VoldemortTM、CouchDBTM、MongoDBTM、RedisTM、RiakTM、Neo4jTM等のスキーマレスな、又は、NoSQLのキーバリューデータストアに格納される。当該データストアは、SQLにおけるデータベースに相当するキースペースを用いて、解析されたJSONオブジェクトを格納する。各キースペースは、テーブルに類似し、行と一連のカラムからなるカラムファミリーに分割される。
入力コネクタ104は、データソース102からのデータを獲得し、当該データを、コンテナ106及び108によって消費可能な入力フォーマットに変形する。一実施例では、入力コンテナ104は、データソース102からフルデータプル及び/又はインクリメンタルデータプルを行う。別の実施例では、入力コンテナ104は、データソース102からのメタデータにもアクセスする。例えば、入力コネクタ104は、エンティティに関するメタデータをフェッチするために「記述(describe)」APIコールを発行し、次に、エンティティに関するデータをフェッチするために適切なAPIコールを発行する。幾つかの実施例では、カスタマイズされた入力コネクタ104が、個別のデータソース102に関して、Connector SDKTMを用いて記述される。
他の実施例では、ワークフロー定義には、コネクタ及びオペレータの集合と共に、それらを実行する命令が含まれる。一実施例では、そうしたワークフローが、コネクタとオペレータがグラフノードであり、エッジがデータフローを反映する有向グラフとして指定される。さらに他の実施例では、複数のデータストリーム103は、コンテナ106及び108に入力される前に、結合され、変形される。
コンテナ108内で動作するバッチ処理フレームワークは、リッチコンテクスチュアルデータストア110に格納されたオンライン分析処理(OLAP)のクエリーを用いて、ビジネス知能を生成する。一実施例では、イベントは、バッチ処理のジョブが所定の時間に実行可能な、未処理のイベントに対するバックアップとして機能するために、バッチコンテナ108に格納されている。バッチコンテナ108は、幾つかの実施例では、未加工のカウント(raw count)と共に、平均、中央値、パーセンタイル分析等の記述統計も提供する。一実施例では、遡及的な分析、機械学習モデリング、他のバッチ分析を提供するために、ScaldingTM及びPigTMといった分析ツールがバッチコンテナ108に含まれる。更に他の実施例では、バッチコンテナ108は、ストリームコンテナ106によって生じたエラーを訂正するために、又は、履歴データ及び再計算結果について分析を行うことでアップグレードされる機能を処理するために使用される。バッチ処理フレームワークの例としては、MapReduceプログラミングモデルを実施するHadoop分散ファイルシステム(HDFS)が挙げられる。
バッチコンテナ108は、複数のNRTデータストリームについてデータを収集する各入力パイプラインからイベントタプルを摂取する。幾つかの実施例では、複数のNRTデータストリームは、単一のパイプラインに割り当てることができ、また、複数のパイプラインは、単一のバッチコンテナに割り当てることができる。
ストリーム処理フレームワーク200は、発生した時のイベントに基づく即時の分析及び識見の伝達に対して、無制限のイベントシーケンスの準リアルタイム(NRT)処理を提供する。一実施例では、フレームワーク200は、ノード当り毎秒100万イベントを処理する。フレームワーク200は、Apache StormTM及びApache SamzaTMといった1以上のストリームプロセッサ、又は、Apache SparkTMといったバッチストリームプロセッサを用いて実施可能である。一実施例では、フレームワーク200は、一連のイベントタプルに対して実行されるジョブを記述し、当該イベントタプルに対して動作を行うAPIを備える。
データソース102からデータを読み込み、ストリームコンテナ106による消費のためにイベントを保持する、入力パイプライン204によって、イベントがフレームワーク200に摂取される。一実施例では、入力パイプライン204は、コンテナ106に入力するイベントにとって、単一の伝達終点である。入力パイプライン204の例としては、Apache KafkaTM、FlumeTM、ActiveMQTM、RabbitMQTM、HTTP/HTTPSサーバ、UDPソケット他が挙げられる。幾つかの実施例では、入力パイプライン204は、インターネットを介して、各API(例えば、Chatter API、Facebook API(例えばOpen Graph)、Twitter API(例えば、Twitter Firehose、Sprinklr、Twitter Search API、Twitter Streaming API)、Yahoo API(例えばBoss search)等)と接続することで、データソース102から発生するNRTデータストリーム103及びデータフローをリスニングすることができるリスナーを備える。幾つかの実施例では、リスナーには、様々なデータソース102からのデータの取り込み(intake)に関与する異種のインスタンスが含まれる。ある実施例によれば、入力パイプライン204は、アプリケーションプロトコル層、又は、HTTPプロトコル層や多くの可能性のある標準及び非標準のプロトコル層といった他の高次のプロトコル層を用いてネットワーク上でデータを受信するよう構成することが可能である。これらの高次のプロトコル層は、インターネットプロトコル(IP)等のネットワーク層、及び/又は、伝送制御プロトコル(TCP)及び/又はユーザデータグラムプロトコル(UDP)等のトランスポート層上でメッセージの送受信を行うためのデータの符号化、パッケージ化、再フォーマットを行うことができる。
特定の実施例では、Apache KafkaTMが、入力パイプライン204として用いられる。Kafkaとは、出版−購読型(publish−subscribe)モデルを用いた分散メッセージングシステムである。Kafkaは、トピックと呼ばれるカテゴリにイベントを保持する。イベントは、いわゆる生産者(producer)によって出版され、いわゆる消費者(consumer)によってプルされ、処理される。分散システムとして、Kafkaはクラスタで実行され、各ノードはブローカーと呼ばれ、複製されたコミットログにイベントを格納する。他の実施例では、様々なメッセージング及びキューイングシステムが使用可能である。
一実施例では、NRTデータストリーム103は、入力パイプライン204にバッチとして待ち行列に入れられる。一実施例では、バッチは、「ワーク単位」とも呼ばれるイベントタプルの集団(assemblage)として定義され、タイムスライスベース及び/又はバッチサイズベースで定義される。タイムスライスベースでの定義には、時間窓(例えば1つのバッチは、イベントタプルを最後の1秒から保持する)内で最近受信した部分によって、少なくとも1つの入力されたNRTデータストリームを分割することが含まれる。バッチサイズベースでの定義には、データサイズ(例えば、1バッチに10MBの最近受信したイベントタプルを含む)で制限又は限定又は抑制される最近受信した部分によって、少なくとも1つの入力されたNRTデータストリームを分割することが含まれる。他の実施例では、タイムサイズベースとバッチサイズベースの組み合わせを用いてバッチを定義する。
特定の実施例では、Apache StormTMが、ストリームコンテナ106で動作し、ユーザによって送信された、「スパウト(Spouts)」又は「エミッタノード」(図2ではまとめてエミッタティア206と称する)と、「ボルト(Bolts)」又は「ワーカーノード」(図2ではまとめてワーカーティア214と称する)と呼ばれる、ノードのネットワークから構成される有向非巡回グラフのマトリックスを用いて、リアルタイムの計算を実行する。Stormのマトリックスでは、スパウトが、NRTデータストリーム103のソースであり、ボルトが、新たなデータを出力として生成するためにこれらのストリームを分析及び処理し、当該出力をマトリックスにおける次のステージへ渡すためのビジネスロジックを保持する。一実施例では、特別なKafkaのスパウトが、Kafkaのトピックからバッチとして読まれたイベントを、ワーカーティア214内のボルトへ発信する。
ワーカーティア214は、ID−名前検索のような単純なデータ変形から、複数ストリーム結合のような複雑な動作まで、様々なストリーム処理のジョブを実行するボルト又はワーカーノード(図2では立方形で示されている)を備える。具体的には、ワーカーティア214内のワーカーノードは、リッチコンテクスチュアルデータストア110のような外部の持続性レイヤーに対して、集約(aggregation)、関数(function)、ストリームグルーピング(例えば、シャッフルグルーピング、フィールドグルーピング、オールグルーピング、グローバルグルーピング)、フィルタリング、コミットといったタスクを実行することができる。幾つかの実施例では、ワーカーティア214内のワーカーノードは、上流ステージが、下流ステージで消費されるイベントタプルを生成する場合、関連する処理ステージ間で推移的従属性を有する。
ストリームコンテナ106内で渡されるメッセージは、タプルと呼ばれる。タプルは、未定義のフィールドセットに関する一連の値である。スパウト及びボルトは、夫々、事前に静的に発信するタプルのフィールドを定義する。全てのタプルは、ストリームコンテナ106内の他の構成要素に変換される前に、バイナリ形式にシリアライズされる。幾つかの実施例では、このシリアライズは、Javaオブジェクトの高速シリアライズを提供するKryoライブラリによって処理される。
ストリームコンテナ106は、イベントストリームを渡すために、様々なタプルのグルーピングストラテジーを用いたスパウトとボルトの並列化を可能にする。グルーピングストラテジーは、イベントストリームの分割を定義し、次の計算単位の並列化の程度を制御する。尚、並列化の程度とは、並列実行数を指す。
スケジューラ208は、ストリームコンテナ106内で1以上の入力パイプライン(例えば、入力パイプライン204)を探知し、上流の完了したステージの出力に依存する、バッチの実行、及び、下流ステージの実行をスケジュールする。一実施例では、スケジューラ208は、入力パイプライン204内の各バッチに固有のバッチ識別子(ID)を割り当てる。更に、スケジューラ208は、パイプライン毎に、現在のバッチの再送又は次のバッチのいずれかを、対応するステージの情報と共に起動する。また、スケジューラ208は、メッセージを[pipeline:‘a’, batch:7, stage‘b’]の形式でコーディネータ210に送信する。幾つかの他の実施例では、スケジューラ208は、IoTプラットフォーム100の様々なパイプラインに優先レベルを割り当てる。この優先レベルは、第2パイプラインからの第2の数のバッチを実行する前に、第1パイプラインからの第1の数のバッチの実行を制御する。
コーディネータ210は、ワーカーティア214内のワーカーノードに対するバッチのディスパッチを制御する。スケジューラ208がバッチステージを起動すると、コーディネータ210は、特定のステージを担当するエミッタティア206及びワーカーティア214にトリガーを送信する。[pipeline:‘a’, batch:7, stage‘b’]がコーディネータ210によって受信されると、コーディネータ210は、100の利用可能なワーカーノードの内、2つに連絡する。これらは、ステージ‘a’から入力を受信した2つのワーカーノードである。
また、コーディネータ210は、処理のために割り当てられたリソースのかなりの部分が特定のバッチには必要でない可能性が高い場合に、十分に「ロングテール」な動作を可能とするために、所与のバッチステージについて、ストリームコンテナ106内の保留中のワーク単位を探知する。stage[a]とstage[b]があり、stage[a]の出力がstage[b]で使用されるように単一の分散動作をとるとすると、stage[a] -> stage[b]で表される。ここで、一実施例に従って、stage[a]が100のワーカーノードで実行され(夫々、物理ノードで実行される)、stage[b]が100のワーカーノードで実行され(夫々、物理ノードで実行される)、stage[a]がstage[b]の2つのインスタンスだけに出力を生成する場合を想定する。stage[a]が完全に実行され、stage[b]が開始すると、コーディネータ210は、stage[b]に割り当てられた100のワーカーノードの内の2つのみが起動する必要があることを知る。stage[a] -> stage[b] -> stage[c]で表される、3つのステージ処理についても同様に、stage[b]がstage[a]から何も入力を受信せず、そのため、stage[c]も何も入力を受信しない場合に、コーディネータ210は、stage[b]及びstage[c]に対して無関係な通信は全て回避する。stage[a]のデータが全てフィルターで除去される場合、stage[b]及びstage[c]に割り当てられたワーカーノードとの通信オーバーヘッドは存在しない。
ストリームコンテナ106は、複数のNRTデータストリームに関してデータを収集する各入力パイプラインからイベントタプルを摂取する。幾つかの実施例では、複数のNRTデータストリームは単一のパイプラインに、複数のパイプラインは単一のストリームコンテナに割り当てることが可能である。
リッチコンテクスチュアルデータストア110は、大量の履歴データを格納し、準リアルタイム分析と組み合わせた履歴クエリーベースの分析を可能とする。一実施例では、リッチコンテクスチュアルデータストア110は、IoTプラットフォーム100内のタスクのスナップショットの取得に使用され、IoTプラットフォーム100のパイプライン、スパウト、ボルト、その他の要素についての状態情報を格納する。幾つかの実施例では、リッチコンテクスチュアルデータストア110は、Apache CassandraTMのようなNoSQLキーバリューカラムストア分散格納システムである。CassandraTMに送られたデータは、Java、Scala、Ruby、Clojure、PythonベースのAPI(例えば、Hector、Pelops、CQL、Thrift、Phpcassa、PyCassa等)を用いて接続が可能な、多くのノード又はコモディティサーバC1〜C3に広がる。Cassandraは、カラムと呼ばれる単位でデータを格納する。各カラムはタプルであり、関連するデータ要素の一覧である。基本的なカラム形式は、(名前、値、タイムスタンプ)で表すことができる。簡潔にするために、カラムの必須の要素であるタイムスタンプはしばしば記載しない。したがって、カラムの例は、(UserName, User-1)と書いてもよい。スーパーカラムと呼ばれる階層の任意のレベルは、任意の数のカラムを取り込んでもよい。レベルを上げて、キー(行と呼ばれることもある)は、名前と、1以上のカラム又はスーパーカラムを含むタプルである。キーの例としては、(Status_Key,(UserName, User-1),(Logged_In, Y)を書くことができる。任意の数のキーをカラムファミリーにグループ化してもよい。それと類似して、カラムファミリーのグループを、階層の最終レベルである、キースペースと称する。上記関係の2つの疑似コードの表現は、以下のように構成される。
・ [keyspace][column family][key][column]
・ [keyspace][column family][key][super column][column]
出力パイプライン218は、処理されたイベントを収集し、永続的な格納へ転送するために待ち行列に入れる。一実施例では、出力パイプライン218からのデータは、SQLデータストア、及び、リッチコンテクスチュアルデータストア110等のNoSQLデータストアへ同時に送信される。出力パイプライン218はKafkaによってホストされることも可能であり、ジョブの出力のためのシンク(sink)として機能する。

<同時処理と多重処理の組み合わせ>
図11は、ワーカーティア214のワーカーノード1の一実施例1100であり、複数の物理スレッドPT1〜PT10を備える。各物理スレッドPT1〜PT10は、プロセッサコア1〜8の内の1つから選択されたワーカーノード1のプロセッサコア全体を利用する。ワーカーティア214は、独自の物理スレッドのセットを持ち、各物理スレッドがプロセッサコア全体を利用する、ワーカーノード2〜3も備える。
図12A及び図12Bは、利用可能な物理スレッドのカウントが論理的に並行なスレッドの設定数と等しいか又はそれを超える場合、1つのパイプラインで複数のバッチを同時に処理する一実施例1200を示している。図12Aに示す典型的な筋書きでは、論理的に並行なスレッドの数、すなわち、並行度(parallelism)は、10である。また、図12Aでは、利用可能な物理スレッド数は10、すなわち、PT1〜PT10である。したがって、10個のバッチB1〜10が入力パイプライン204で待ち行列に入ると、コーディネータ210が、図12Bにおける利用可能な10個の物理スレッドPT1〜PT10で、バッチB1〜B10を同時に処理する。実行時に、コーディネータが、利用可能な物理スレッドPT1〜PT10のカウントが論理的に並行なスレッド設定数(10)に等しいと判断したため、この同時処理1200Bが生じる。
図13A、13B、13Cは、論理的に並行なスレッド設定数よりも少ない利用可能な物理スレッドがある時、1つのパイプラインでバッチB1〜10を多重化処理(multiplexing)する一実施例1300A〜Cを示している。図13Aに示す典型的な筋書きでは、論理的に並行なスレッドの設定数、すなわち、並行度は10である。しかし、利用可能な物理スレッドの数は9のみ、すなわち、PT1〜PT9である。利用不可能な物理スレッドPT10は、図13A〜Cでは、グレイアウトされた箱によって示されている。幾つかの実施例では、利用不可能であるということは、過剰な又は等しいスレッドは開始されてもいないということを指しており、こうした実施例に関しては、当該利用不可能な物理スレッドPT10は、図13A〜Cでは示されないことになる。他の実施例では、利用不可能であるということは、図13A〜Cの典型的な筋書きで示されているように、既に開始された物理スレッドが失敗し、バッチ処理ができないことを指している。
開示される技術は、9個の利用可能な物理スレッドPT1〜PT9に対してバッチB1〜B10を順に多重化処理することで、利用可能な計算リソースPT1〜PT10と処理対象のデータ単位B1〜B10における不一致に適合する。多重化処理には、利用可能な物理スレッドPT1〜PT9に対してバッチB1〜B9を同時に処理することが含まれ、バッチB1〜B9から1つのバッチ(例えばB9)が、利用可能な物理スレッドによって処理を完了する、或いは、出力パイプライン218で待ち行列に入ると、入力パイプライン204の次のバッチB10が、図13Cに示すように、コーディネータ210によって、次の利用可能な物理スレッド(例えばPT9)で処理される。

<強力な順序付けによる多段階処理>
図14は、バッチ1として識別されるバッチの多段階処理140の一実施例である。図14に示す典型的な筋書きでは、TwitterTM分析ツールを生成する。多段階処理1400の間、ツイート(Tweet_1〜Tweet_2)が個々のタプルとしてバッチ1に格納される。これらのツイートは、エミッタ1402及びコンテナ(図示せず)のトランスフォーマー1404、1406、1408で処理される。結果として得られた分析は、ツイート内の全てのハッシュタグ、及び、ツイートにおけるそれらの頻度、それらが現れた全ユーザとツイートの数、それらのハッシュタグと頻度を持つユーザを一覧にする。また、出力の順序は、バッチ1のツイート(Tweet_1〜Tweet_2)の一覧順に従う。
多段階処理1400は、2つのステージ(ステージAとステージB)に分割される。ステージAでは、「Twitter摂取エミッタ」1402がTwitterAPIに接続し、ツイートタプルをトランスフォーマー1404、1406、1408に発信する。「@トランスフォーマー」1404は、ツイートを構文解析し、「@」が前に付く単語を探すことでユーザを識別し、「@ストリーム」と呼ばれるストリーム内のこれらの単語を「@#結合トランスフォーマー」1408に送信する。また、処理ステージAでは、「#トランスフォーマー」1406は、ツイートを構文解析し、「#」が前に付く単語を探して、「#ストリーム」としてこれらの単語を「@#結合トランスフォーマー」1408に送信する。処理ステージAについて、コーディネータ210は、図14でグレイアウトされている物理スレッドPT4及びPT6を利用する。このステージ情報は、スケジューラ208で格納され、スケジューラ208は、当該情報を実行時にコーディネータ210に通知する。
ステージBでは、「@#結合トランスフォーマー」1408が、@ストリームと#ストリームの両方を受信し、ユーザが言及されたツイート内で、ハッシュタグが何回現れたかをカウントする。図14でステージBが開始されると、コーディネータ210が、物理スレッドPT4及びPT6がステージAの処理を行ったことを識別し、同じ物理スレッドPT4及びPT6で処理されるストリーム(@ストリーム及び#ストリーム)を「@#結合トランスフォーマー」1408に対してディスパッチする。
更に、コーディネータ210は、バッチ1の両方のバッチ単位、すなわち、@ストリームと#ストリームが、それらのどちらかがステージBで「@#結合トランスフォーマー」1408によって処理される前に、ステージAで完全に処理されることを確実にすることで、出力における強力な順序付けを維持する。

<オーケストレーション>
オーケストレーション112は、非プログラマーがエンティティ管理ワークフローを構築し実行することを可能にするウェブプラットフォームである。オーケストレーション112は、図4A、図4B、図4Cに関連して後述する、宣言的且つドラッグ−ドロップ入力を受け付ける、データエントリカラムナ114を生成する宣言的且つ視覚的インターフェースを利用する。一実施例では、オーケストレーション112によって、非プログラマーは、広範囲に亘るプログラミング知識が無くても、ワークフローを視覚的に設計することができる。一実施例では、オーケストレーション112は、JSONの設定ファイルに格納されている形式宣言的記述(formal declarative description)を使用する。当該JSONファイルは、セッションで使用される挙動(behavior)を定義する。定義される挙動には、ワークフローで使用される他のパラメータ及び変数と共に、処理するイベントを指定するライフサイクルの間のエンティティの状態、状態遷移トリガー、使用される遷移規則、使用される動作規則を指定する応答動作が含まれる。他の実施例では、HTML(Hypertext Markup Language)、SGML(Standard Generalized Markup Language)、DML(Declarative Markup Language)、XAML(Extensible Markup Language)、XSL(Extensible Stylesheet Language)、XSLT(Extensible Stylesheet Language Transfomations)、Haskell及びMLのような関数型プログラム言語、Prologのような論理型プログラミング言語、Lucidのようなデータフロープログラミング言語、Jess、Lips、CLIPSのようなルールベース言語等の様々なプログラミング言語が、セッションで使用される挙動を定義するために使用できる。
別の実施例では、オーケストレーション112は、宣言的構成要素及びランタイム構成要素を備える。宣言的構成要素を用いて、非プログラマーは、エンティティ状態、状態に関する遷移トリガー、状態に対する応答動作、エンティティライフサイクルワークフローの他のパラメータ及び変数を宣言する。一実施例では、宣言的構成要素は、他のユーザ及びコミュニティによって共通に使用される、既存のワークフロー又はワークフローの抜粋を提供する。一実施例では、宣言的入力が、記述コードの結果としてではなく、視覚的な方法で、ブラウザで受領される。宣言的入力は、次に、ランタイム構成要素で直接実行可能な宣言的ファイル(例えば、XML)のパッケージを構築するために、オーケストレーション112によって使用される。
更なる実施例では、図では詳細に示されていないが、オーケストレーション112のランタイム構成要素が、リレーショナルでXMLネイティブの永続的なサービス、ゲートウェイ、SOAP、REST API、及び、機械学習、クラスタリング、分類子(classifer)ベースの分類及び推薦(recommendation)、コンテクストテキスト分析、テキスト抽出及びモデリング、深い言語分析、表現ベースの英数字パターン検出といった意味的機能(semantic function)を用いて、宣言的ファイルを解釈する変換装置を備える。
更に別の実施例では、オーケストレーション112は、ルールエンジン、及び、JavaやC++のような非宣言型言語のためのスクリプト環境として機能する。こうした実施例では、オーケストレーション112は、一連の事象(fact)に対して継続的に一連の規則を適用することで、高次の手続き型又は命令型プログラム言語での規則ベースのプログラミングを提供する。当該規則は、事象の変更、又は、手続き型又は命令型コード(例えばJavaコード)の実行が可能である。幾つかの実施例では、オーケストレーション112は、エディタ機能、コードフォーマット、エラーチェック、コマンド実行及びデバッグ、グラフィカルなデバッガーを提供する統合開発環境(IDE)に基づく、グラフィカルな規則開発環境を備える。
また、オーケストレーション112は、探索エンジン115、ライブダッシュボード構築エンジン116、モーフィングエンジン117、トゥイーンエンジン118、トゥイーンステッパー119、統合開発環境(IDE)121、レンダリングエンジン120を備える。
開示されるライブダッシュボード構築エンジン116は、探索エンジン115を用いてリアルタイムデータのクエリー結果として開発された複数の分析を表示する、ダッシュボードを設計する。つまり、非技術者ユーザは、探索エンジン115からのクエリー結果の複数のセットについて、単一のダッシュボード上に、表示チャートを配置することができる。規則ベースへの変更がダッシュボード上の表示チャートに影響する場合は、ダッシュボード上に残った表示チャートが、その変更を反映して更新される。正確な生のクエリー結果が、ダッシュボード上の全ての表示チャートに亘って、生成され、表示される。
一実施例では、「EQL言語」と呼ばれるリアルタイムクエリー言語が、オーケストレーション112によって使用され、結果を整列させる手段としてのデータフローを可能にする。これにより、登録されたイベントタプルについて、その場その場の分析が可能となる。非技術者ユーザは、クエリーパラメータを変更するために、状態定義、状態遷移トリガー、状態遷移条件、状態遷移動作を指定し、更新された規則ベースを用いて生のデータクエリーに基づいて、棒グラフ、円グラフ、散布図といった様々な表示オプションを選択する(表示チャートへのリアルタイムな変更を起こす)ことができる。EQLでの宣言は、(フィルター、グループ、順番といった)キーワード、識別子、リテラル(literal)、特別な文字から構成される。EQLは宣言的である。すなわち、クエリーから得たいものを記述する。次に、クエリーエンジンが、それをいかに効果的に行うかを決定する。
一実施例では、イベントバスを備えるランタイムフレームワークは、ユーザ計算装置上で実行されるアプリケーション123、クエリーエンジン(図示せず)、統合開発環境121の間の通信を処理する。統合開発環境121は、状態、トリガー、状態遷移、応答動作、エンティティ活動レベル、経時的なそれらの変化を含む、複数のレベルの階層で実施される動画の(animated)データ視覚化の表示を提供する。
統合開発環境121は、動画のデータ視覚化の表示を提供し、データ視覚化に適用された形状間の遷移を動画化する動画スクリプトを処理するインターフェースを提供する。動画遷移の例としては、チャートが表示環境に適合し、且つ、切れないようにスケーリングすること、及び、縦横の表示の回転が挙げられる。動画スクリプトは、レンダーされる形状を表し、レンダーされる形状間の遷移の動画を表示する非手続き型データ構造を用いて表される。一実施例では、生成された非手続き型データ構造を表現するためにJSONを用いることができる。
レンダリングエンジン120は、形状及び形状間の遷移の動画を表す非手続き型データ構造を、レンダーされた図(graphic)に変換する。
他の実施例では、オーケストレーション112は、上記で挙げたものと同じ要素を備えていなくても構わず、且つ/又は、代わりに他の/異なる要素を備えていても構わない。或いは、上記で挙げた要素に加えて他の/異なる要素を備えていても構わない。
出力コネクタ122は、オーケストレーション112、及び/又は、出力パイプライン218からのデータを送信して、当該データをアプリケーション123によって消費可能な出力形式に変換する。一実施例では、出力コネクタ122は、オーケストレーション112からのフルデータプッシュ且つ/又はインクリメンタルデータプッシュを行う。別の実施例では、出力コネクタ122は、オーケストレーション112からメタデータも提供する。幾つかの実施例では、カスタマイズされた出力コネクタ122は、個々のアプリケーション123に対して、Connector SDKTMを用いて記述される。
アプリケーション123は、IoTプラットフォーム100での動作に適合した構成要素を備える。IoTプラットフォーム100、又は、類似物は、アプリケーションサーバノード等のノードによって提供可能である。アプリケーション123は、ネットワークを介した、複数のアプリケーションサーバノードと情報の送受信を行うための入力及び出力データハンドラー構成要素を備えることができる。
一実施例では、アプリケーション123は、複数のコンタクト記録、複数のアカウント記録、及び/又は、他の記録(まとめてアプリケーション記録と称する)を含む複数のデータオブジェクトを格納するためのデータストアを備える。幾つかの実施例では、アプリケーション記録には、ユーザ、ファイル、フォルダ、機会、アカウント、イベント、及び/又は、何らかのデータオブジェクトに対応するタプルを含むことができる(但し、これらに限るものではない)。アプリケーション123は、データストアに格納された記録を挿入、削除、更新の少なくとも何れかを行うように構成可能なデータ管理構成要素を備えることができる。また、アプリケーション123は、アプリケーション記録に関連する活動を監視するよう構成された監視エージェントを備えることができる。例えば、監視エージェントは、パブリック又はプライベートソーシャルネットワーキングサービスを介したユーザの投稿、及び/又は、ユーザの業務用デスクトップコンピュータの電子メールクライアントを探知し、データストアに格納された連絡記録、イベント記録、及び/又は、他のアプリケーション記録に対する更新を監視するよう構成することができる。
処理されたイベントは、Sales cloudTM、Data.comTM、Service CloudTM、Desk.comTM、Marketing CloudTM、PardotTM、Service CloudTM and Wave AnalyticsTMといったSalesforce.com製品等のアプリケーション123によって更に使用できる。例えば、処理されたイベントは、アプリケーション123での機会、見込み客(lead)、連絡等を識別する、或いは、Radian6TM、 Buddy MediaTMサービス等の製品によるマーケティング業務を支援するために使用可能である。処理されたイベントは、次に、ソーシャルネットワークプロバイダーによって提供されるマッチングツールを使って、これらのソーシャルネットワーク上におけるこれらの特定のユーザを再発見することにも使用できる。更には、処理されたイベントを、ストリーミングコンテナ106及びオーケストレーション112が夫々行う集約及び分析から学習された特定のターゲティング(targeting)でレイヤー化することも考えられる。
一実施例では、IoTプラットフォーム100は、クラウドコンピューティング環境に配置することができ、マルチテナントデータベースシステムとして実施してもよい。ここで使用される、マルチテナントデータベースシステムという用語は、データベースシステムのハードウェア及びソフトウェアの様々な要素が、1以上のテナントによって共有されるシステムを指す。例えば、所与のアプリケーションサーバが、多数のテナントへの要求を同時に処理し、所与のデータベーステーブルが、複数のテナントに関する行を格納してもよい。
幾つかの実施例では、IoTプラットフォーム100の要素又は構成要素は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、その他のデータ処理システム又は計算装置を含む様々なタイプのエンジンであってもよい。当該要素又は構成要素は、様々なネットワーク接続を通じてデータベースに通信可能に接続することができる。例えば、ストリーミングコンテナ106はネットワーク(例えばインターネット)を介して、バッチコンテナ108は直接のネットワークリンクを介して、オーケストレーション112はさらに異なるネットワーク接続によって、夫々、接続することができる。
幾つかの実施例では、IoTプラットフォーム100で使用されているデータベースは、マルチテナントデータベースシステムを形成するために、1以上のテナントからの情報を共通のデータベースイメージのテーブルに格納することができる。データベースイメージは、1以上のデータベースオブジェクトを備えることが可能である。他の実施例では、データベースは、リレーショナルデータベース管理システム(RDBMS)、オブジェクト指向データベース管理システム(OODBMS)、分散ファイルシステム(DFS)、スキーマの無いデータベース管理システム、その他のデータ格納システム又は計算装置とすることができる。
IoTプラットフォーム100は、ここでは、特定のブロックに関して説明されているが、当該ブロックは、説明の都合上定義されていると理解され、構成部品の特定の物理的な構成を要求することを意図していない。更に、当該ブロックは物理的に区別される構成要素に対応している必要はない。物理的に区別される構成要素が使用される限りにおいて、(例えばデータ通信に関する)構成要素間の接続を、所望の通りに、有線及び/又は無線とすることが可能である。様々な要素又は構成要素を結合して単一のソフトウェアモジュールとすることができ、複数のソフトウェアモジュールを同じハードウェア上で実行することが可能である。

<ステートマシン>
図3は、エンティティとの相互作用を自動的に多段階で進行させるステートマシン装置300の一実施例である。図3の略図は、円でエンティティの状態を表し、矢印で或る状態から他の状態への遷移を引き起こす遷移トリガーを表している。具体的には、ステートマシン装置300は、サーモスタットセンサーといった電気機器のライフサイクル管理を表している。一実施例では、電気機器は、機器のバッテリーレベルやネットワーク接続レベル等の当該機器に関する状態情報を受信するために、定期的にpingを送信している。ステートマシン装置300で表示される状態には、開始状態302、48時間不良継続状態306、長期無イベント状態310、ケース作成/更新状態314、応答待ち状態318、成功状態328が含まれる。更に、ステートマシン300は、イベントトリガー301、309、320、及び、時間トリガー303、307、311、313という、2種類の遷移トリガーを処理する遷移プロセッサを備える。更に、常時規則が満足される322の場合に、システムは成功状態328を維持する。あるイベントがNRTデータストリームから登録されると、遷移プロセッサによって処理されるイベントトリガーは、状態遷移を引き起こす。時間トリガーは、タイマーがオーバーランした際に、状態遷移を引き起こす。他の実施例では、イベントの組み合わせが登録される時に生じる既定のトリガー、及び、累積トリガーをオーバーライドするカスタムトリガー等、様々な遷移トリガーを定義することが可能である。
次に、図3に示すサーモスタットとの相互作用の多段階進行について見ると、装置エラーがNRTイベントストリームで検出されると、装置エラーイベントトリガー301が登録される。装置エラーイベントトリガー301は、Salesforce Service CloudTMといったサービスアプリケーションにケースを生成することで検出されたエラーを修正するよう設計されたチケットワークフローを開始させる。このチケットワークフローの開始は、開始状態302で表される。イベントストリームが、装置エラーが検出されてから3日間修正されていないことを確認すると、Day3タイマートリガー303がチケットワークフローを開始状態302から48時間不良継続状態306に遷移させる。48時間不良継続状態306から、次の状態遷移が、Day5タイマートリガー307又は不健康イベントトリガー309によって引き起こされる。イベントストリームが、装置エラーが検出されてから5日間修正されていないことを確認すると、Day5タイマートリガー307は、チケットワークフローを、48時間不良継続状態306から長期無イベント状態310に遷移させる。別の実施例では、装置のバッテリーレベルが低い、又は、装置のネットワーク接続が悪い、或いは、その両方の状態があることをイベントストリームが確認すると、不健康イベントトリガー309が、チケットワークフローを、48時間不良継続状態306からケース作成/更新状態314に遷移させる。
チケットワークフローは、長期無イベント状態310に達すると、即時タイマートリガー311を用いてすぐにケース作成/更新状態314に遷移する。一旦ケース作成/更新状態314になると、ステートマシン装置300を利用するアプリケーションが、ケースをオープンしたか、それに失敗したかを確認することで、応答したという事実に基づいて、チケットワークフローは、即時タイマートリガー313によって、応答待ち状態318に遷移する。
一旦、応答待ち状態318になると、チケットワークフローは、ケース応答が受信されたことを確認するケース応答イベントトリガー320が登録されると、応答待ち状態318から48時間不良継続状態306に遷移する。
幾つかの実施例では、常時規則満足322が登録されると、チケットワークフローの様々な状態が、成功状態328に遷移する。一実施例では、成功状態328は、NRTイベントストリームで、装置の健康が良好であること、すなわち、装置バッテリーレベルが高く、装置のネットワーク接続が良いことを確認するイベントを受領したことを表す。成功状態328に達した時はいつでも、ステートマシン装置300は安定した状態にある。

<データエントリカラムナ>
図4A、図4B、図4Cは、図3に示すステートマシンを生成するために、宣言的入力を受け付けるデータエントリカラムナ400A〜Cを示している。更に一般的には、データエントリカラムナ400A〜Cは、非技術ユーザが、洗練されたユーザ管理及びリソース供給オペレーション、アプリケーションライフサイクル管理オペレーション(例えば、Salesforce ThunderTM401)、トラフィック監視オペレーション、活動探知オペレーション、アプリケーションモデリングオペレーションを表す複雑なステートマシンを、宣言によって設計できるようにする。
特に、データエントリカラムナ400A〜Cは、非技術ユーザが、ステートマシン装置の状態、タイムベース遷移トリガー、イベントベース遷移トリガー、条件の定義、状態遷移に応じた代わりの動作を容易に指定できるようにする。幾つかの実施例では、データエントリカラムナ400A〜Cは、非技術ユーザが、ステートマシンの様々な変数及びパラメータを指定する単純な表現を使用できるようにする。
図4Aについて見ると、データエントリカラムナ400Aによって、ユーザは、ステートマシン装置に関して、様々なイベントベース遷移トリガー402を識別することができる。図4Aに示す例では、「装置イベントタイプ」403と題するイベントベース遷移トリガー403は、ドロップダウンメニュー404から選択フィールドの内の1つを選択することで、生成される。別の実施例では、カスタムのイベントベース遷移トリガーが、「イベントタイプ追加」ウィジット408をクリックすることで、生成される。装置イベントタイプトリガー403については、非技術ユーザによってチェックボックス405が選択されると、装置イベントタイプトリガー403が、図3のチケットワークフロー(図4ではオーケストレーションと称している)を開始するように、条件が非技術ユーザによって指定される。更に、条件406が非技術ユーザによって設定される。条件406は、自身が取り込むデータベースフィールドの少なくとも1つの値に対して評価される。図4Aで使用される条件406の例としては、装置バッテリーレベルが低いかどうか、又は、装置のネットワーク接続が悪いかどうかが挙げられる。この例としての条件406は、以下の簡単な表現を用いて表される。

!device.battery_good||!device.wifi_good
条件が満足されると、装置イベントタイプトリガー403が実行される。他の実施例では、装置イベントタイプトリガー403の記述407は、非技術ユーザから受信される。
更に進むと、データエントリカラムナ400Aの条件定義で使用される様々な変数409(例えば、装置ID、ケース応答、サブジェクト、最後のサブジェクト、ケースID)が、非技術ユーザによって指定され、各イベントベース遷移トリガー410にマッピングされる。一実施例では、変数409を取り込む各条件411も、非技術ユーザによって識別される。別実施例では、変数409の各値412は、各変数409の初期値記述413と共に、非技術ユーザによって指定される。更に、カスタム変数が、「変数追加」ウィジット414をクリックすることで生成可能である。上記の指定は、簡単な表現、ドロップダウンメニュー、チェックボックス、ドラッグ−ドロップ機能等の宣言的又は視覚的入力を用いて行うことができる。
更に、非技術ユーザは、カラムナ415を用いて、ステートマシンの様々な状態(例えば、常時、開始、48時間不良継続、長期無イベント、ケース作成/更新、応答待ち)を識別できる。また、非技術ユーザは、ある状態から別の状態への遷移を引き起こす遷移トリガー416、満足されると遷移トリガー416が実行される条件417、遷移トリガー416に応答して行われる動作418によって、カラムナ415を介して特定の状態にリンクすることができる。他の実施例では、カラムナ415における常時状態の記述419及びそのトリガー、条件、動作を、非技術ユーザから受け取る。上記の指定は、簡単な表現、ドロップダウンメニュー、チェックボックス、ドラッグ−ドロップ機能等の宣言的又は視覚的入力を用いて行うことができる。図4Aに示す特定の状態定義は、「常時(Always)」と題するグローバル状態が生成された(図3における成功)ことを示している。装置のバッテリーレベルが良好であり、且つ、装置のネットワーク接続が良好であるという条件が満足された場合に、常時規則が満足される。この例示した条件は、以下の簡単な表現で表される。

device.battery_good&&device.wifi_good
上記条件が満足される時、成功状態が維持される。
図4Bに示す開始状態420について見ると、イベントストリームが、装置エラーが検出されてから3日間修正されていないことを確認すると、動作423が実行される、すなわち、開始状態420が48時間不良継続状態425へ遷移するように、非技術ユーザは、Day3タイマータイプトリガー421を指定する。他の実施例では、開始状態420の記述424及びそのトリガー、条件、動作を、非技術ユーザから受け取る。
図4Bのデータエントリカラムナ400Bに示す48時間不良継続状態については、非技術ユーザが、装置イベントタイプトリガー426とDay5タイマータイプトリガー430の2つの遷移トリガーを指定する。装置イベントタイプトリガー426は、条件427を満足することで起動され、Day5タイマータイプトリガー430は、装置エラーが検出されてから5日間修正されていないことによって起動される。図4Bに例示した条件427は、3つの副条件427a〜c、すなわち、装置バッテリーレベルが低く、且つ、装置ネットワーク接続が悪いかどうかに関する第1副条件427a、装置のバッテリーレベルが低いかどうかのみに関する第2副条件427b、装置ネットワーク接続が悪いかどうかのみに関する第3副条件427cを含む。例示した条件427及びその副条件427a〜cは、非技術ユーザによって夫々指定される以下のような簡単な表現で表される。

!device.battery_good&&!device.wifi_good
!device.battery_good
!device.wifi_good
これらの副条件の何れか1つが満足されると、動作428が実行される。動作428には、例示した条件427の少なくとも1つの副条件427a〜cに個別に応答する、3つの異なる副動作428a〜cが含まれる。第1副動作428aは、第1副条件427aに応答し、装置のバッテリーレベルが低く、且つ、装置ネットワーク接続が悪いことを示すサブジェクトを生成する。第2副動作428bは、第2副条件427bに応答して、単に装置のバッテリーレベルが低いことを示すサブジェクトを生成する。第3副動作428cは、第3副条件427cに応答して、単に装置ネットワーク接続が悪いことを示すサブジェクトを生成する。
これら3つの副動作428a〜cに加えて、動作428は、48時間不良継続状態425からケース作成/更新状態436への状態遷移を引き起こす「マスト(must)動作428d」も含む。マスト動作は、副条件427a〜cのどれが満足しているか、副動作428a〜cのどれが実行されているかに関わらず、一実施に従って実行される。例示した動作428と副動作428a〜c、及び、マスト動作428dは、非技術ユーザによって夫々指定される以下のような簡単な表現で表される。

subject = “Battery voltage low and weak Wi-Fi”
subject = “Battery voltage low”
subject = “Wi-Fi weak”
Change state to Create or Update a case
更に、Day5タイマータイプトリガー430がタイムアウトすると、動作431が実行され、動作431は、状態を48時間不良継続状態425から長期無イベント状態432への遷移を引き起こす。例示した動作431は、非技術ユーザによって夫々指定される以下のような簡単な表現で表される。

Change state to No Events in a Long Time
他の実施例では、48時間不良継続状態425の記述429及びそのトリガー、条件、動作を、非技術ユーザから受け取る。上記全ての指定は、簡単な表現、ドロップダウンメニュー、チェックボックス、ドラッグ−ドロップ機能等の宣言的又は視覚的入力を用いて行うことができる。
図4Cのデータエントリカラムナ400Cに示す長期無イベント状態432に関しては、非技術ユーザは、長期無イベント状態432からケース作成/更新状態436への即時状態遷移を引き起こす即時タイマータイプトリガー433を指定する。トリガー433に応答して実行される動作434には、2つの副動作434aと434bが含まれる。第1副動作434aは、長い間イベントが登録されていないことを示すサブジェクトを生成する。第2副動作434bは、「マスト動作」であり、状態遷移を引き起こす。例示した動作434とその副動作434a、及び、マスト動作434bは、非技術ユーザによって夫々指定される以下のような簡単な表現で表される。

subject = “No Events in a Long Time“
Change state to Create or Update a case
他の実施例では、長期無イベント状態432の記述435及びそのトリガー、条件、動作を非技術ユーザから受け取る。上記全ての指定は、簡単な表現、ドロップダウンメニュー、チェックボックス、ドラッグ−ドロップ機能等の宣言的又は視覚的入力を用いて行うことができる。
ケース作成/更新状態436に関して、非技術ユーザは、ケース作成/更新状態436から応答待ち状態441への即時状態遷移を引き起こす即時タイマータイプトリガー437を指定する。但しここでは、即時タイマータイプトリガー437は、条件438を満足した場合に起動される。例示した条件438は、2つの副条件438a及び438bを備える。第1副条件438aは、作成されたケースフォームのフィールドが空白であるかを評価する。第2副条件438bは、最後に作成されたケースフォームのフィールドが埋められているか、且つ、評価されるサブジェクトが最後に作成されたケースのサブジェクトであるかを評価する。
例示した条件438及びその副条件438a〜bは、非技術ユーザによって夫々指定される以下のような簡単な表現で表される。

ISBLANK(case)
!ISBLANK(caseID) && (subject != lastSubject)
副条件438a〜bの少なくとも1つが満足されると、動作439が実行される。動作439は、副動作439a、439b、439cを含み、応答待ち状態441への状態遷移を引き起こす。
例示した動作439及びその副条件439a〜cは、非技術ユーザによって夫々指定される以下のような簡単な表現で表される。

Upsert? in?
Change state to Waiting for a Response
Upsert? in? Change state to Waiting for a Response
他の実施例では、ケース作成/更新状態436の記述440及びそのトリガー、条件、動作を非技術ユーザから受け取る。上記全ての指定は、簡単な表現、ドロップダウンメニュー、チェックボックス、ドラッグ−ドロップ機能等の宣言的又は視覚的入力を用いて行うことができる。
応答待ち状態441に関して、非技術ユーザは、ケース応答が受け取られたことを確認するケース応答イベントタイプトリガー442を指定する。ケース応答イベントタイプトリガー442は、ケース応答が問題なく登録されたかどうかを評価する条件443が満足されることによって起動される。
条件443が満足されると、動作444が実行される。動作444は、副動作444a、444b、444c、444dを含み、48時間不良継続状態425への状態遷移を引き起こす。
例示した動作444及びその副動作444a〜dは、非技術ユーザによって夫々指定される以下のような簡単な表現で表される。

caseID = caseResponse.ID
lastSubject = subject
caseResponse = null
Change state to 48 Hours still Bad
他の実施例では、応答待ち状態441の記述445及びそのトリガー、条件、動作を非技術ユーザから受け取る。上記全ての指定は、簡単な表現、ドロップダウンメニュー、チェックボックス、ドラッグ−ドロップ機能等の宣言的又は視覚的入力を用いて行うことができる。
他の実施例では、様々な使用ケース及びオペレーションに基づく、ステートマシン及びデータエントリカラムナが実施可能であり、その幾つかは、特定の実施例として以下で述べる。
他の実施例では、様々な使用ケース及びオペレーションに基づく、ステートマシン及びデータエントリカラムナが、図示されていないが、実施可能である。例えば、図3に見られるような、ダイアグラムアプローチや、図4A〜4Cに関して上記で述べたようなデータを追加するためのGUIによって、GUI表示の分節(articulation)が工夫されるかもしれない。非技術ユーザは、ステートダイアグラム表示の分節を通じてデータを入力することが考えられる。
上記実施例は、単なる例であって、上記で列挙した、高次のプログラム言語、低次のプログラム言語、機能プログラム言語、マークアッププログラム言語、命令プログラム言語であっても、別のプログラム言語で同様に適用可能である。
以下に述べるスロットル及び合成イベントは、オーケストレーションにおける2つの典型的なパターンである。

<フローチャート>
図15は、準リアルタイム(NRT)データストリームの多段階処理における強力な順序付けを提供するフローチャート1500の一実施例を示している。フローチャート1500は、少なくとも一部は、コンピュータ又は他のデータ処理システムで(例えば、情報の受信又は読み出し、当該情報の処理、結果の格納、当該結果の送信を行うよう構成された1以上のプロセッサによって)実施可能である。他の実施例では、図15に示す例とは異なる順番で動作を行ってもよく、且つ/又は、図15に示す例とは異なる、又は、少ない、又は、追加の動作を行ってもよい。複数の動作は、幾つかの実施例で組み合わせることができる。便宜上、このワークフローについて、方法を実行するシステムを参照して説明する。当該システムは、必ずしも、本方法の一部である必要はない。
動作1510で、本方法は、上述したように、1以上の準リアルタイム(NRT)データストリームからのデータを処理する複数の物理スレッドを含むコンピューティンググリッドを操作する工程を含む。
動作1520で、本方法は、上述したように、NRTデータストリームからのデータを、コンピューティンググリッドで多段階に亘って処理するためのパイプラインにおけるバッチとして、待ち行列に追加する工程を含む。
動作1530で、本方法は、上述したように、バッチステージに関する物理スレッドへのバッチ単位のディスパッチを制御するグリッドコーディネータと通信して、グリッドスケジューラにバッチに関する現在のバッチステージ情報を維持する工程を含む。
動作1540で、本方法は、上述したように、グリッドコーディネータで現在のバッチステージ情報が受領されたことに応答して、当該情報において識別された現在のバッチステージに関して、ディスパッチを保留にするバッチ単位を決定する工程を含む。
動作1550で、本方法は、上述したように、現在のバッチステージが依存する前回のバッチステージに関してバッチ単位を処理し、現在のバッチステージに関して保留のタスクを登録した物理スレッドを識別する工程を含む。
動作1560で、本方法は、上述したように、前回のバッチステージに関するバッチ単位の処理が完了したことに続いて、現在のバッチステージに関するバッチ単位を、識別された物理スレッドへディスパッチする工程を含む。
一実施例では、グリッドスケジューラがコンピューティンググリッドにおけるパイプラインを探知し、バッチの実行、及び、完了したステージの出力に依存する下流ステージの実行をスケジューリングする。
別の実施例では、グリッドスケジューラは、コンピューティンググリッドにおける各パイプラインに、パイプライン識別子(ID)を割り当てる。更なる実施例では、グリッドスケジューラは、パイプラインにおける各バッチにバッチ識別子(ID)を割り当てる。更に別の実施例では、グリッドスケジューラが、バッチの各処理ステージにステージ識別子(ID)を割り当てる。
一実施例では、グリッドスケジューラは、各バッチが実行される毎に、パイプラインID、バッチID、ステージIDをグリッドコーディネータに伝達する。別の実施例では、本方法は、処理ステージが互いに依存していない場合に、1以上のパイプラインの1以上のバッチに関して、複数の処理ステージを同時に実行する工程を更に含む。

<スロットル>
スロットルは、あるイベントが動作を発生させる率を制限する。「この期間にこの動作をこんなに何回も行ってはならない」という意味を与えるために、毎出力動作に、スロットルタイム期間(755)を追加することで、出力動作をスロットルすることができる。この意味は、出力動作ダイアログとの関連で表すことができ、オーケストレーションによってレンダー及び管理することができる。動作が既に指定回数行われていた場合は、当該動作を行う次の要求が、当該期間が経過するまで無視される。スロットルは、バッテリーが低下している、又は、サブスクリプション(subscription)の期限が近づいている旨の顧客への警告といった、ビジネス環境において予想されるケースを処理するための効果的な機構である。
スロットルは、幾つかのケースでは、最終的に持続不可能なリソースの消費を避けるために、又は、タイムベース遷移トリガーとイベントベース遷移トリガーの内、少なくとも1つによって引き起こされる状態遷移に対応した動作の受信者を過剰に刺激することを避けるために実施される。追加するための更なる情報がある時のみ2回目の電子メールを送信するといった、スロットルのより複雑なケースは、変数を更に設定又はテストする、或いは、状態を追加することによって、対処することができる。必要な機能は、次に説明するように、規則ベース入力を用いて、データエントリカラムナに追加できる。
図5A、図5B、図6A、図6Bは、上述したストットル機能を実施する状態を追加するための宣言的入力を受け付けるデータエントリカラムナ500A、500B、600A、600Bを示している。より一般的には、データエントリカラムナ500A、500B、600A、600Bによって、非技術ユーザは、洗練されたユーザ管理及びリソース提供オペレーション、アプリケーションライフサイクル管理オペレーション(例えばSalesForce IoT CloudTM 502)、トラフィック監視オペレーション、活動探知オペレーション、アプリケーションモデリングオペレーションを表す複雑なステートマシンの設計に、スロットル機能を宣言により追加することが可能となる。
特に、データエントリカラムナ500A、500B、600A、600Bによって、非技術ユーザは、状態遷移に応答して動作がトリガーされる前に発生するイベントに関して、単位数毎の回数を容易に指定することが可能となる。幾つかの実施例では、データエントリカラムナ500A、500B、600A、600Bによって、非技術ユーザは、ステートマシンの様々な変数及びパラメータを指定するための簡単な表現を利用できるようになる。一実施例では、スロットル表現には、第1イベントで始まる1回だけの期間を指定する時間パラメータが含まれる。当該期間中は、第1イベントと一致する特徴を有する第2イベントは無視又は放棄される。
一実施例では、図5Aに示されるように、ユーザは、繰り返し制限動作506へのリンクを活性化させることができる。結果は、図5Bの例に示される。非技術ユーザは、開始(Started)522からの状態遷移を引き起こす、常時(Always)524を指定する規則(RULES)512を使用することができる。尚、“IF”カラム526で指定された表現が満足されると、動作528がトリガーされる。ユーザは“IF”カラム526を選択すると、動作を繰り返す前にイベントが生じる回数を任意で指定することができる。図6Aは、カウントが2回であること、及び、単位664を選択するためのドロップダウンを示している。指定されたスロットルは、各出力動作に対してスロットル期間を追加して、選択された時/イベントタイプ(When/Event Type)及び“IF”条件の下にある全ての動作に適用される。図6Bは、「1月につき、2回以上この動作を行ってはならない」という意味を与えるよう構成されたスロットル機能686を例示している。スロットルは、ユーザが“X”687をクリックしてそれを削除しない限り、データエントリカラムナ内の“IF”セルの下部に残る。
図4Bの例は、図7に示す「24時間毎に2回」755といったスロットルイベントを含むことが可能である。ユーザは、更なるスロットル規則を含めるために、繰り返し制限動作775を選択することができる。

<合成イベント>
合成イベントは、より基本的なイベントの特定のパターンの発生を反映する。ユーザは、一般的に、表現をイベントとして機能させることを望む。例えば、ユーザは、バッテリーの電圧が閾値を下回る時はいつでも動作が行われるようにオーケストレーションを記述して、表現がイベントとして機能するようにオーケストレーションを記述することを望むかもしれない。これは、“battery.voltage<2.7”といった表現を条件427のカラムに記載することで、表現してもよい。この合成イベントは、“エッジトリガー(edge-triggered)”イベントとも称され、次の2つの状況の何れかの下で起動(fire)する。2つの状況とは、状態への入力時に表現が“真(true)”である場合と、状態への入力時は表現が“偽(false)”であって、後に、当該状態のままで表現が“真”となる場合である。表現が“偽”となって、その後、当該状態のまま再び“真”になる場合、イベントは再び起動する。ユーザインターフェースは、Boolean表現のみが入力されることを保証するために確認をする。つまり、合成イベントは、変数の値、又は、変数に分解する表現をイベントとして扱う。最初に状態を入力した時の変数の値をテストし、その後、当該変数の値に対する何らかの変更についてテストを行う。
“battery.voltage <= 2.7 during 48 hours AND device temperature > 140 during 48 hours”といった複雑な集約及び制限に関してチェックを行う状態に対する必要性を省くために、合成イベントはオーケストレーションに含めることができる。

<プロファイル>
オーケストレーションは、ワークフローが直面する重要な問題の一つである、イベントが到着し得る順番が予測できないという問題を解決することができる。オーケストレーションに関するプロファイルは、オーケストレーションのオブジェクトについての現在の情報を提供する。プロファイルは、イベント及び状態と共に、オーケストレーションを指定する、すなわち、到着するかもしれない全てのイベント、及び、各イベントに応答して(応答はオーケストレーションの状態によって異なる可能性がある)オーケストレーションがすべきことを一覧にするために、使用される。
ステートマシンのフォームを減らす幾つかの機構を、一方の軸にイベントを、他方の軸に変数及びプロファイルの条件をとったマトリックスに、組み合わせることが可能である。状態の使用の単純化に加えて、このマトリックスフォームによって、変数及びプロファイルの各条件と対になった各イベントの効果をユーザに検討させることで、ユーザはより少ないエラーでオーケストレーションを記述することができる。

<フローチャート>
図8Aは、非プログラミングユーザ向けの、エンティティ管理ワークフローの生成を単純化するフローチャート800の実施例を示している。フローチャート800は、少なくとも一部は、コンピュータ又は他のデータ処理システムで(例えば、情報の受信又は読み出し、当該情報の処理、結果の格納、当該結果の送信を行うよう構成された1以上のプロセッサによって)実施可能である。他の実施例では、図8Aに示す例とは異なる順番で行ってもよく、且つ/又は、図8Aに示す例とは異なる又は少ない又は追加の動作を行ってもよい。複数の動作は、幾つかの実施例で組み合わせることができる。便宜上、このワークフローについて、方法を実行するシステムを参照して説明する。当該システムは、必ずしも、本方法の一部である必要はない。
動作801で、本方法は、人間−機械の相互作用に依存せずに機械によって生成された機械生成イベントを処理するワークフローステートマシンにおいて、複数のケース−ステータス状態を表示する。
動作802で、本方法は、第1イベント後の少なくとも第1ケース−ステータス状態の間に、入力された第2イベントを無視するか、又は、処理するかを決定するイベントフィルタリング条件をメモリに記録する。
動作803で、本方法は、イベントフィルタリング条件の、一定の期間内の回数に制限を指定する整数のカウントパラメータであって、当該制限を超えた、一致する特徴を持った追加のイベントは無視又は放棄され、当該カウントパラメータを初期化する工程を含む。
動作804で、本発明は、入力された機械生成イベントを処理する命令をワークフローエンジンにロードし、少なくともケース−ステータス状態及び第1イベントフィルタリングに応じて選択された命令を実行する工程を含む。
幾つかの実施例では、宣言的入力は、メッセージバス及びストリーム処理システムを備える準リアルタイム(NRT)イベント管理フレームワークから受領される。一時実施例では、宣言的入力は、ユーザクリックデータ、ユーザ購買行動、装置データ、ソーシャルメディアストリームの内、少なくとも1つを含む。別の実施例では、メッセージバスは、Kafka、Flume、ActiveMQ、RabbitMQの内、少なくとも1つである。更に別実施例では、ストリーム処理システムは、StormとSparkの内、少なくとも1つである。

<フローチャート>
図8Bは、非プログラミングユーザ向けの、エンティティ管理ワークフローの生成を単純化するフローチャート810のサーバ側の実施例を示している。フローチャート810は、少なくとも一部は、コンピュータ又は他のデータ処理システムで(例えば、情報の受信又は読み出し、当該情報の処理、結果の格納、当該結果の送信を行うよう構成された1以上のプロセッサによって)実施可能である。他の実施例では、図8Bに示す例とは異なる順番で動作を行ってもよく、且つ/又は、図8Bに示す例とは異なる又は少ない又は追加の動作を行ってもよい。複数の動作は、幾つかの実施例で組み合わせることができる。便宜上、このワークフローについて、方法を実行するシステムを参照して説明する。当該システムは、必ずしも、本方法の一部である必要はない。
動作811で、上述したように、ステートマシンビルダーで実行される本方法は、エンティティとの相互作用の自動化された多段階進行を実施させるステートマシンを指定する、宣言的入力を受け付けるデータエントリカラムナを表示のために生成する工程を含む。幾つかの実施例では、データエントリカラムナは、多段階進行における状態に関する少なくとも1つのカラム、タイムベース遷移トリガー、イベントベース遷移トリガー、条件の定義、状態遷移に応じた択一的な動作を含む。
一実施例では、データエントリカラムナへの入力を示すデータは、状態遷移に応じた動作の実行に続いて得られる少なくとも1つの状態の仕様(specification)を更に含む。別の実施例では、データエントリカラムナへの入力を示すデータは、全ての状態に適用されるグローバルな状態遷移に応じた少なくとも1つの常時動作(Always Action)の仕様を更に含む。更に別の実施例では、データエントリカラムナへの入力を示すデータは、エンティティの複数の状態の仕様を更に含む。
動作812で、本方法は、上述したように、一定の期間が経過すると状態遷移を引き起こすタイマーによって、及び、状態遷移を引き起こすイベントによって、択一的に指定される状態遷移トリガーを定義するデータエントリカラムナへの宣言的入力を受領する。幾つかの実施例では、エンティティが電気機器の場合、当該電気機器の状態には、少なくとも、オン、オフ、スタンバイ、電源投入、電源切断、全電力のパーセンテージ、ネットワーク接続の範囲の内、少なくとも1つが更に含まれる。幾つかの実施例では、エンティティがユーザの場合、ユーザの状態には、熱心な、移り気な(churned)、自然消滅(lapsed)の内、少なくとも1つを更に含む。
動作81で、本方法は、上述したように、状態遷移に応答して実行される選択された択一的な動作を指定するデータエントリカラムナへの宣言的入力を、ステートマシンビルダーが受領する工程を含む。
動作814で、本方法は、上述したように、宣言的入力、又は、当該宣言的入力から構築されるワークフローステートマシン装置を保存する工程を含む。
幾つかの実施例では、宣言的入力を、メッセージバス及びストリーム処理システムを備える準リアルタイム(NRT)イベント管理フレームワークから受領する。一実施例では、宣言的入力には、ユーザクリックデータ、ユーザ購買行動、装置データ、ソーシャルメディアストリームの内、少なくとも1つが含まれる。別の実施例では、メッセージバスは、Kafka、Flume、ActiveMQ、RabbitMQの内、少なくとも1つである。更に別の実施例では、ストリーム処理システムは、StormとSparkの内、少なくとも1つである。
図8Cは、非プログラミングユーザ向けの、エンティティ管理ワークフローの生成を単純化する典型的な方法フローチャート820のクライアント側の実施例を示している。フローチャート820は、少なくとも一部は、コンピュータ又は他のデータ処理システムで(例えば、情報の受信又は読み出し、当該情報の処理、結果の格納、当該結果の送信を行うよう構成された1以上のプロセッサによって)実施可能である。他の実施例では、図8Cに示す例とは異なる順番で動作を行ってもよく、且つ/又は、図8Cに示す例とは異なる又は少ない又は追加の動作を行ってもよい。複数の動作は、幾つかの実施例で組み合わせることができる。便宜上、このワークフローについて、方法を実行するシステムを参照して説明する。当該システムは、必ずしも、本方法の一部である必要はない。
動作821で、本方法は、上述したように、エンティティとの相互作用の自動化された多段階進行を実施させるステートマシンを指定する、宣言的入力を受け付けるデータエントリカラムナを受領する工程を含む。幾つかの実施例では、データエントリカラムナは、多段階進行における状態に関する少なくとも1つのカラム、タイムベース遷移トリガー、イベントベース遷移トリガー、条件の定義、状態遷移に応じた択一的な動作を含む。
一実施例では、データエントリカラムナへの入力を示すデータは、状態遷移に応じた動作の実行に続いて得られる少なくとも1つの状態の仕様を更に含む。別の実施例では、データエントリカラムナへの入力を示すデータは、全ての状態に適用されるグローバルな状態遷移に応じた少なくとも1つの常時動作(Always Action)の仕様を更に含む。更に別の実施例では、データエントリカラムナへの入力を示すデータは、エンティティの複数の状態の仕様を更に含む。
動作82で、本方法は、上述したように、エンティティの複数の状態、一定の期間が経過すると状態遷移を引き起こすタイマー及びイベント値が条件を満たすと状態遷移を引き起こす宣言的入力によって択一的に指定される状態遷移トリガー、状態遷移に応答した動作の実行に続いて得られる少なくとも1つの状態、全ての状態に適用されるグローバルな状態遷移に応じた少なくとも1つの常時動作を定義するデータエントリカラムナへの入力を示すデータを送信する工程を含む。
幾つかの実施例では、エンティティが電子機器の場合、当該電気機器の状態には、オン、オフ、スタンバイ、電源投入、電源切断、全電力のパーセンテージ、ネットワーク接続の範囲の内、少なくとも1つが更に含まれる。幾つかの実施例では、エンティティがユーザの場合、ユーザの状態には、熱心な、移り気な、自然消滅の内、少なくとも1つを更に含む。
本方法では更に、当該条件が、自身が取り込むデータベースフィールドの少なくとも1つの値に対して評価され、状態遷移に応答して実施される択一的な動作を制御することを含む。
幾つかの実施例では、入力イベントは、メッセージバス及びストリーム処理システムを備える準リアルタイム(NRT)イベント管理フレームワークから受領される。一実施例では、宣言的入力は、ユーザクリックデータ、ユーザ購買行動、装置データ、ソーシャルメディアストリームの内、少なくとも1つを含む。別の実施例では、メッセージバスは、Kafka、Flume、ActiveMQ、RabbitMQの内、少なくとも1つである。更に別の実施例では、ストリーム処理システムは、StormとSparkの内、少なくとも1つである。
図9は、非プログラミングユーザ向けの、エンティティ管理ワークフローの生成を単純化する典型的な方法フローチャート900の実施例を示している。フローチャート900は、少なくとも一部は、コンピュータ又は他のデータ処理システムで(例えば、情報の受信又は読み出し、当該情報の処理、結果の格納、当該結果の送信を行うよう構成された1以上のプロセッサによって)実施可能である。他の実施例では、図9に示す例とは異なる順番で動作を行ってもよく、且つ/又は、図9に示す例とは異なる又は少ない又は追加の動作を行ってもよい。複数の動作は、幾つかの実施例で組み合わせることができる。
動作910で、本方法は、人間−機械の相互作用に依存せずに機械によって生成された機械生成イベントを処理するワークフローステートマシンにおいて、ケース−ステータス状態を表示する工程を含む。
動作920で、本方法は、複数のケース−ステータス状態における少なくとも最初のケース−ステータス状態の間に、入力された第2イベントを無視するか処理するかを決定するために、イベントプリプロセッサによって使用されるイベントフィルタリング条件をメモリに記録する工程を含む。
動作930で、本方法では、イベントフィルタリング条件は、第1イベントで開始する1回だけの期間を指定する時間パラメータを含み、当該期間中は第1イベントと合致する特徴を持った第2イベントが無視又は放棄される。
動作940で、本方法は、入力された機械生成イベントを処理する命令を、遷移プロセッサ及びイベントプリプロセッサを備えるワークフローエンジンステートマシン装置にロードし、少なくともケース−ステータス状態及びイベントフィルタリング条件に応じて選択される命令を実行する工程を含む。
本方法では更に、当該条件が、自身が取り込むデータベースフィールドの少なくとも1つの値に対して評価され、状態遷移に応答して実施される択一的な動作を制御することを含む。
幾つかの実施例では、宣言的入力は、メッセージバス及びストリーム処理システムを備える準リアルタイム(NRT)イベント管理フレームワークから受領される。一実施例では、宣言的入力は、ユーザクリックデータ、ユーザ購買行動、装置データ、ソーシャルメディアストリームの内、少なくとも1つを含む。別の実施例では、メッセージバスは、Kafka、Flume、ActiveMQ、RabbitMQの内、少なくとも1つである。更に別の実施例では、ストリーム処理システムは、StormとSparkの内、少なくとも1つである。

<マルチテナント統合>
図10は、1以上の実施例に従った図1のIoTプラットフォーム100との相互作用に適した典型的なマルチテナントシステム1000のブロック図である。
図1のIoTプラットフォーム100は、マルチテナントシステムを用いて実施することができる。その点で、図10は、1以上の実施例に従った図1のIoTプラットフォーム100との相互作用に適した典型的なマルチテナントシステムの概念的なブロック図を示している。
一般に、図10に示すマルチテナントシステム1000は、複数のテナント間で共有される共通データベース1030(或いは、ここでは「マルチテナントデータベース」と称する)からのデータ1032に基づく仮想アプリケーション1028を動的に生成及び支援するサーバ1002を備える。仮想アプリケーション1028A及び1028Bによって生成されるデータ及びサービスは、ネットワーク1045を介して、クライアント装置1040A又は1040Bの幾つかに、要望通りに、提供される。仮想アプリケーション1028A及び1028Bは、マルチテナントシステム1000に加入(subscribe)している様々なテナントの夫々に対して、データベース1030内のデータ1032へのアクセスを確実に提供するアプリケーションプラットフォーム1010を用いて、ランタイム(又はオンデマンド)で適切に生成される。制限されない1つの例に従って、マルチテナントシステム1000は、複数のテナントの認証されたユーザの幾人かを支援可能な、オンデマンドマルチテナントユーザ関係管理(CRM)システムの形で実施される。
ここで使用される「テナント」又は「組織(organization)」は、マルチテナントデータベース1030内のデータの共通のサブセットへのアクセスを共有する1以上のユーザのグループを指している。この点で、各テナントは、各テナントに関連付けられている、又は、割り当てられている、又は、属している1以上のユーザを含む。言い換えると、マルチテナントシステム1000内の各ユーザは、マルチテナントシステム1000によって支援される複数のテナントの内、特定のテナントに対して、関連付けられている、又は、割り当てられている、又は、属している。テナントは、ユーザ、ユーザの部署、仕事又は合法的な組織、及び/又は、マルチテナントシステム1000内のユーザの特定の集団についてのデータを維持するその他のエンティティを表し得る。複数のテナントは、サーバ1002及びデータベース1030へのアクセスを共有してもよいが、サーバ1002から各テナントに提供される特定のデータ及びサービスは、他のテナントに提供されるものとは安全に分離することができる。したがって、マルチテナント構造によって、ユーザの様々な集団は、他のテナントに属している、又は、関連付けられているデータ1032の何れかを必ずしも共有しなくても、機能及びハードウェアリソースを共有することができる。
マルチテナントデータベース1030は、相当数のテナントと関連付けられているデータ1032を格納し、管理することが可能な、何らかの種類のレポジトリ又は他のデータ格納システムである。データベース1030は、何らかの種類の従来のデータベースサーバハードウェアを用いて実施し得る。様々な実施例では、データベース1030は、サーバ1002と処理ハードウェアを共有する。他の実施例では、データベース1030は、ここに記載する様々な機能を実行するために、サーバ1002と通信する別個の物理的且つ/又は仮想データベースサーバハードウェアを用いて実施される。典型的な実施例では、データベース1030は、仮想アプリケーション1028A又は1028Bにより開始又は提供されるクエリーに応答して、仮想アプリケーション1028A又は1028Bのインスタンスに対してデータ1032の特定のサブセットを取り込み及び提供するために、最適なクエリープランを決定することができる、データベース管理システム又は他の同等のソフトウェアを備える。マルチテナントデータベース1030が、アプリケーションプラットフォーム1010によって生成されるオンデマンド仮想アプリケーション1028A又は1028Bに対して、ランタイムでデータを提供する(又は提供に利用できる)という点で、マルチテナントシステム1030を、ここでは、択一的に、オンデマンドデータベースと称してもよい。
実際には、データ1032は、アプリケーションプラットフォーム1010を支援する何らかの方法で、整理され(organized)、フォーマットされてもよい。様々な実施例では、データ1032は、半不定形(semi-amorphus)なヒープ(heap)型フォーマットを維持するために、比較的少数の大きなデータテーブルに適切に整理される。次に、データ1032は、特定の仮想アプリケーション1028A又は1028Bに必要とされるように、整理することができる。様々な実施例では、従来のデータの関係は、インデックス作成、一意性(uniqueness)、エンティティ間の関係、従来のデータベース構成の他の側面の少なくとも何れかを要望通り設定する、任意の数のピボットテーブル1034を用いて設定される。更なるデータ操作及びレポート整形は、一般に、様々なメタデータ構成物(construct)を用いてランタイムで実行される。例えば、汎用データ辞書(UDD)内のメタデータは、複数のテナントに共通な、任意の数のフォーム、レポート、ワークフロー、ユーザアクセス権、ワークロジック、他の構造物の記述に使用できる。テナント固有のフォーマット化、機能、他の構成物は、テナント毎に、テナント固有のメタデータ338として、要望通りに、維持されてもよい。データ1032を強制的に全てのテナント及びアプリケーションに共通する柔軟性のないグローバル構造にするのではなく、必要に応じて追加の構造を提供するピボットテーブル1034及びメタデータ1038A及び1038Bによって、データベース1030は比較的不定形に構築される。そのためには、アプリケーションプラットフォーム1010は、ピボットテーブル1034及び/又はメタデータ1038A〜Bを適切に用いて、データベース1030から比較的不定形なデータ1032を論理的に獲得、処理、提示するために、仮想アプリケーション1028A及び1028Bの「仮想の」構成要素を生成する。
サーバ1002は、仮想アプリケーション1028を生成するための動的アプリケーションプラットフォーム1010をまとめて提供する1以上の実際の且つ/又は仮想の計算システムを用いて実施される。例えば、サーバ1002は、典型的には必要に応じて従来のネットワーク通信、クラスタ管理、負荷分散、その他の機能と関連して、互いに連携して動作する実際の且つ/又は仮想のサーバのクラスタを用いて実施されてもよい。サーバ1002は、プロセッサ1005、メモリ1006、入力/出力機能1007等の何らかの種類の従来の処理ハードウェアで動作する。入力/出力機能1007は、一般に、ネットワーク(例えば、ネットワーク1045、他のローカルエリア、ワイドエリア、他のネットワーク)、大容量記憶装置、表示装置、データ入力装置等に対するインターフェースを表している。プロセッサ1005は、任意の数の「クラウドベースの」或いは他の仮想システムを含む、任意の数の分散又は統合システムに散在する、1以上のプロセッサ、コントローラ、マイクロプロセッサ、マイクロコントローラ、プロセッシングコア、その他の計算リソースといった何らかの適切な処理システムを用いて実施されてもよい。メモリ1006は、プロセッサ1005上で実行するためのプログラミング命令を格納できる、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、磁気又は光学大容量記憶装置等の、非一時的な短期又は長期記憶装置、又は、その他のコンピュータ可読媒体を表している。コンピュータ実行可能プログラミング命令は、サーバ1002及び/又はプロセッサ1005によって読みだされ、実行されると、サーバ1002及び/又はプロセッサ1005に、アプリケーションプラットフォーム1010及び/又は仮想アプリケーション1028A及び1028Bを作成又は生成又は進行させ、ここに記載されている1以上の追加のタスク、動作、機能、処理の少なくとも1つを実行する。尚、メモリ1006は、こうしたコンピュータ可読媒体の適切な一実施例を表しており、代わりに或いは追加で、サーバ1002が、携帯可能な又はモバイルの構成要素又はアプリケーションプラットフォーム(例えば、携帯可能なハードドライブ、USBフラッシュドライブ、光学ディスク等)として実現される外部のコンピュータ可読媒体を受け付け、それらと協働することが考えられる。
アプリケーションプラットフォーム1010は、クライアント装置1040A及び1040Bにデータ及び/又はサービスを提供する仮想アプリケーション1028A及び1028Bを生成する、何らかの種類のソフトウェアアプリケーション又はその他のデータ処理エンジンである。典型的な実施例では、アプリケーションプラットフォーム1010は、処理ハードウェアの処理リソース、通信インターフェース、その他の機能に対するアクセスを、何らかの種類の従来の又は独自のオペレーティングシステム1008を用いて、獲得する。仮想アプリケーション1028A及び1028Bは、典型的には、クライアント装置1040A及び1040Bから受領した入力に応答してランタイムで生成される。例示された実施例に関しては、アプリケーションプラットフォーム1010は、大量データ処理エンジン1012、クエリー生成部1014、テキストのインデックス付け及びその他の検索機能を提供する検索エンジン1016、ランタイムアプリケーション生成部1020を備える。これらの機能の夫々は、個別の処理又は他のモジュールとして実施されてもよく、多くの同等の実施例には、異なる且つ/又は追加の機能、構成要素、他のモジュールが必要に応じて含まれると考えられる。
ランタイムアプリケーション生成部1020は、クライアント装置1040A及び1040Bから受信した特定の要求に応答して、仮想アプリケーション1028A及び1028Bを動的に構築し、実行する。仮想アプリケーション1028A及び1028Bは典型的には、特定のアプリケーション1028A又は1028Bの特定のテーブル、レポート、インターフェース、その他の機能の少なくとも1つを記述する、テナント固有のメタデータ1038A及び1038Bに従って構築される。様々な実施例では、各仮想のアプリケーション1028A又は1028Bが、必要に応じて、クライアント装置1040A又は1040Bと関連付けされたブラウザ又は他のクライアントプログラム1042A及び1042Bに供給可能な動的なウェブコンテンツを生成する。
ランタイムアプリケーション生成部1020は、クライアント装置1040A及び1040Bのユーザによって開始又は提供される入力クエリーに応答して、必要に応じて、マルチテナントデータ1032をデータベース1030から効率的に獲得するために、クエリー生成部1014と適切な相互作用を行う。典型的な実施例では、クエリー生成部1014は、特定の機能を要求するユーザの同一性(identity)を(ユーザの関連付けられたテナントと共に)検討し、汎用データ辞書(UDD)1036内のシステム全体に亘るメタデータ、テナント固有のメタデータ1038A及び1038B、ピボットテーブル1034、その他の利用可能なリソースの内、少なくとも何れかを用いて、データベース1030に対するクエリーを構築し、実行する。したがって、この例におけるクエリー生成部1014は、当該要求を開始したユーザ且つ/又はテナントに与えられたアクセス権とクエリーが一致することを確実にすることで、共通のデータベース1030のセキュリティを維持する。このように、クエリー生成部1014は、ユーザ及び/又はテナントにアクセス可能な要求されたデータ1032のサブセットを、当該ユーザ及び/又はテナントに関して特定の仮想アプリケーション1028A又は1028Bのテーブル、レポート、その他の機能を追加する(populate)ために、データベース1030から必要に応じて適切に獲得する。
更に図10を参照すると、データ処理エンジン1012は、データ1032について、アップロード、ダウンロード、更新、オンライントランザクション処理等の大量の処理動作を実行する。多くの実施例では、データ1032の緊急性の低い大量処理は、処理リソースが利用可能になった時に発生するようスケジューリングすることができ、これにより、クエリー生成部1014、検索エンジン1016、仮想アプリケーション1028A及び1028B等によるより緊急性の高いデータ処理を優先させることができる。
例示した実施例では、アプリケーションプラットフォーム1010は、データ駆動の仮想アプリケーション1028A及び1028Bを、それらが支援するテナントについて、作成且つ/又は生成するために利用される。こうした仮想アプリケーション1028A及び1028Bは、カスタム(又はテナント固有の)スクリーン1024、標準(又は汎用)スクリーン1022等のインターフェース機能を使用してもよい。任意の数のカスタム及び/又は標準オブジェクト1026は、テナントにより開発された仮想アプリケーション1028A及び1028Bへの統合に利用可能であってもよい。ここで使用されている、「カスタム」は、各オブジェクト又はアプリケーションが、テナント固有(例えば、マルチテナントシステムにおける特定のテナントに関連するユーザのみ利用可能である)、又は、ユーザ固有(例えば、マルチテナントシステムにおけるユーザの特定の集団にのみ利用可能である)ことを意味するものとして理解される。尚、「標準」又は「汎用」アプリケーション又はオブジェクトは、マルチテナントシステムにおける複数のテナントに亘って利用可能である。各仮想アプリケーション1028A又は1028Bに関連付けられたデータ1032は、特定の仮想アプリケーション1028A又は1028Bの特定の機能(例えば、レポート、テーブル、機能、オブジェクト、フィールド、式、コード等)を記述したメタデータ1038A及び1038Bと共に、必要に応じて、データベース1030に提供され、要求されるまで、又は、必要とされるまで格納される。例えば、仮想アプリケーション1028A及び1028Bは、テナントにアクセス可能な複数のオブジェクト1026を備えてもよく、この場合、テナントにアクセス可能なオブジェクト1026毎に、そのオブジェクトタイプに関連する情報が、各オブジェクトタイプに関連付けられた様々なフィールドに関する値と共に、データベース1030において、メタデータ1038A及び1038Bとして維持される。この点において、オブジェクトタイプは、各オブジェクト1026の構造(例えば、フォーマッティング、機能、その他の構成物)、及び、それと関連付けられた様々なフィールドを定義する。
引き続き図10を参照すると、サーバ1002によって提供されるデータ及びサービスは、ネットワーク1045上の何らかの種類のパソコン、携帯電話、タブレット、その他のネットワーク接続可能な(network-enabled)クライアント装置1040A又は1040Bを用いて取り込むことができる。例示した実施例では、クライアント装置1040A又は1040Bは、マルチテナントデータベース1030から取り込んだデータ及び/又は情報を図示可能な、モニター、スクリーン、別の従来の電子表示等の表示装置を備える。典型的には、ユーザは、ハイパーテキストトランスファープロトコル(HTTP)等のネットワーキングプロトコルを用いてネットワーク1045を介してサーバ1002とコンタクトをとるために、クライアント装置1040A及び1040Bによって実行される従来のブラウザアプリケーション又はその他のクライアントプログラム1042A又は1042Bを操作する。ユーザは、典型的には、サーバ1002との後の通信で当該ユーザを識別するセッション識別子(「セッションID」)を得るために、サーバ1002に対して自身の同一性を認証する。識別されたユーザが仮想アプリケーション1028A又は1028Bに対するアクセスを要求すると、ランタイムアプリケーション生成部1020が、必要に応じて、メタデータ1038A及び1038Bに基づいてランタイムでアプリケーションを適切に作成する。上述したように、仮想アプリケーション1028A又は1028Bには、Java、ActiveX、クライアント装置1040A又は1040B上で動作する従来のクライアントソフトウェアを用いて提示可能なその他のコンテンツを含んでいてもよく、他の実施例は、所望するように、ユーザによって提示及び閲覧可能な動的なウェブ又はその他のコンテンツを単純に提供してもよい。
上記説明は、本質的に単なる例示であって、本主題及び本出願の実施例、及び、こうした実施例の使用を限定することは意図していない。更に、技術分野、背景、詳細な説明において表現された又は示唆された如何なる理論によっても拘束される意図はない。ここで使用される、「典型的な(exemplary)」とは、「例(example)、例証(instance)、説明(illustration)として役立つ」という意味である。ここに典型として記載されたどの実施例も、他の実施例よりも好ましい又は有利であると必ずしも解釈されるわけではなく、ここに記載された典型的な実施例は、主題の範囲又は適用可能性を決して限定するものではない。
簡潔性のため、データベース、ソーシャルネットワーク、ユーザインターフェース、システムの他の機能的側面(及び、システムの個々の動作構成要素)に関する従来技術は、ここでは詳細には述べない。また、当業者は、実施例が、任意の数のシステム且つ/又はネットワークアーキテクチャ、データ送信プロトコル、装置構成と連動して実施されてもよく、ここに記載のシステムは、単なる適切な例にすぎないことを理解するであろう。更に、特定の専門用語は、ここでは参照を目的として使用されているに過ぎず、限定することを意図していない。例えば、「第1」、「第2」や他のこうした数字に関する用語は、文脈で明示されていない限り、順序や順番を示唆するものではない。
本主題の実施例は、ここでは、機能的且つ/又は論理的ブロック構成要素の観点から、及び、様々な計算構成要素又は装置によって実行される、動作、処理タスク、機能を参照して記載される。こうした動作、タスク、機能は、コンピュータによって実行される、コンピュータ化された、ソフトウェアによって実施される、コンピュータによって実施されるものとして、言及されることもある。実際、1以上の処理システム又は装置は、アクセス可能なメモリの場所のデータビットを表す電気信号を他の信号の処理と共に操作することで、記載された動作、タスク、機能を、実行することが可能である。データビットが保持されているメモリの場所は、データビットに対応する特定の電気的、磁気的、光学的、又は、有機的特性を有する物理的な場所である。図に示されている様々なブロック構成要素は、特定の機能を実行するよう構成された、任意の数のハードウェア、ソフトウェア、ファームウェア構成要素によって実現されてもよいと理解される。例えば、システム又は構成要素の実施例は、1以上のマイクロプロセッサや他の制御装置の制御の下に様々な機能を実行する、例えば、メモリ要素、ディジタル信号処理要素、論理要素、ルックアップテーブル等の様々な集積回路の構成要素を使用してもよい。ソフトウェア又はファームウェアで実施される場合、ここに記載のシステムの様々な要素は、本質的には、様々なタスクを実行するコードセグメント又は命令である。プログラム又はコードセグメントは、プロセッサ可読媒体に格納、或いは、伝送媒体又は通信経路における搬送波で具体化されるコンピュータデータ信号によって転送することが可能である。「プロセッサ可読媒体」又は「機械可読媒体」は、情報を格納又は転送可能な何らかの非一時的媒体を含んでもよい。プロセッサ可読媒体の例には、電子回路、半導体記憶装置、ROM、フラッシュメモリ、消去可能なROM(EROM)、フロッピーディスケット、CD−ROM、光学ディスク、ハードディスク、光ファイバー媒体、無線周波数(RF)リンク等が含まれる。コンピュータデータ信号には、電子ネットワークチャネル、光ファイバー、空中(air)、電磁経路、RFリンクといった伝送媒体を伝播可能な、何らかの信号を含んでもよい。コードセグメントは、インターネット、イントラネット、LAN等のコンピュータネットワークを介してダウンロードされてもよい。この点において、ここに記載の主題は、コンピュータによって実施されるシステムと関連して、且つ/又は、互いに協力し、通信し合う2以上の個別の且つ区別されるコンピュータによって実施されるシステムと関連して、実施可能である。1以上の典型的な実施例では、ここに記載の主題は、マルチテナント環境内の仮想ユーザ関係管理(CRM)アプリケーションと連動して実施される。

<幾つかの特定の実施例>
幾つかの特定の実施例及び特徴を以下で述べる。

NRTデータの多段階処理
一実施例では、準リアルタイム(NRT)データストリームの多段階処理における強力な順序付けを提供する方法を説明する。本方法は、1以上の準リアルタイム(NRT)データストリームからのデータを処理する複数の物理スレッドを含むコンピューティンググリッドを操作する工程と、NRTデータストリームからのデータを、コンピューティンググリッドで多段階に亘って処理するためのパイプラインにおけるバッチとして、待ち行列に追加する工程と、バッチステージに関する物理スレッドへのバッチ単位のディスパッチを制御するグリッドコーディネータと通信して、グリッドスケジューラにバッチに関する現在のバッチステージ情報を維持する工程と、グリッドコーディネータで現在のバッチステージ情報が受領されたことに応答して、当該情報で識別された現在のバッチステージに関して、ディスパッチを保留にしているバッチ単位を判定する工程と、現在のバッチステージが依存する前回のバッチステージに関してバッチ単位を処理し、現在のバッチステージに関して保留のタスクを登録した物理スレッドを識別する工程と、前回のバッチステージに関するバッチ単位の処理が完了したことに続いて、現在のバッチステージに関するバッチ単位を、識別された物理スレッドへディスパッチする工程を含む。
一実施例では、グリッドスケジューラがコンピューティンググリッドでパイプラインを探知し、バッチ、及び、完了したステージの出力に依存する下流ステージの実行をスケジューリングする。
別の実施例では、グリッドスケジューラは、コンピューティンググリッドにおける各パイプラインに、パイプライン識別子(ID)を割り当てる。更なる実施例では、グリッドスケジューラは、パイプラインにおける各バッチにバッチ識別子(ID)を割り当てる。更に別の実施例では、グリッドスケジューラが、バッチの各処理ステージにステージ識別子(ID)を割り当てる。
一実施例では、グリッドスケジューラは、各バッチが実行される毎に、パイプラインID、バッチID、ステージIDをグリッドコーディネータに伝達する。別の実施例では、本方法は更に、処理ステージが互いに依存していない場合に、1以上のパイプラインの1以上のバッチに関して、複数の処理ステージを同時に実行する工程を含む。
本章に記載の本方法の他の実施例は、上述の方法の何れかを実行するためにプロセッサによって実行可能な命令を格納する、非一時的なコンピュータ可読記憶媒体を備えることが可能である。本章に記載の本方法の更に別の実施例は、上述の本方法の何れかを実行するために、メモリと当該メモリに格納された命令を実行する動作が可能な1以上のプロセッサを含むシステムを備えることが可能である。
一実施例では、ストリーム処理システムの限られた数のワーカーノード上でロングテールタスクシーケンスを含む複数のタスクシーケンスを処理する方法は、物理スレッドを有し、1つの物理スレッドがワーカーノードのプロセッサコア全体を利用するワーカーノードに対して、コンテナを定義する工程を含む。本方法はまた、複数のタスクシーケンスに関して、コンテナで実行されるパイプラインに、入力された準リアルタイム(NRT)データストリームからのデータを待ち行列に追加する工程と、NRTデータストリームからのデータをバッチとして、当該バッチのディスパッチを制御するコンテナコーディネータを用いて処理する工程と、当該バッチを物理スレッドにディスパッチする工程を含み、バッチは完了又はタイムアウトまで実行され、実行中は、利用可能な物理スレッドのカウントと、論理的に並行なスレッドの設定数の比較が行われる。本方法は更に、利用可能な物理スレッドのカウントが、論理的に並行なスレッドの数と等しい、又は、それを超える場合は、物理スレッドでバッチを同時に処理し、利用可能な物理スレッドが論理的に並行なスレッドの数よりも少ない場合は、利用可能な物理スレッドに対してバッチを順番に多重化する工程を含む。
幾つかの実施例では、開示された本方法は、パイプライン内の少なくとも1つのバッチのサブセットを、パイプライン内の少なくとも1つの別のバッチのサブセットと同時に処理し、当該両サブセット内の少なくとも幾つかのバッチを順番に多重化する。幾つかの実施例では、論理的に並行なスレッドの数は10であり、利用可能な物理スレッドのカウントは10である。本方法は更に、10個の利用可能な物理スレッドでパイプライン内の複数のバッチを同時に処理することが可能である。他の実施例では、論理的に並行なスレッドの数は10であり、利用可能な物理スレッドのカウントは9である。開示された本方法は更に、9個の利用可能な物理スレッドの内、8個で、パイプライン内の複数のバッチを同時に処理し、少なくとも1個の利用可能な物理スレッドについて、パイプライン内の幾つかのバッチを、順番に多重化する。
別の実施例では、論理的に並行なスレッドの数は10であり、且つ、利用可能な物理スレッドのカウントは1であり、1個の利用可能な物理スレッドに対して、パイプライン内のバッチを順番に多重化する。多重化では、パイプラインで次のバッチを処理する前に、完了又はタイムアウトまで、パイプラインでバッチを処理することが可能である。
幾つかの実施例では、開示された本方法は更に、コンテナ内の複数のワーカーノードに対して、複数のパイプラインを同時に処理することが可能である。
バッチは、幾つかの実施例に関しては、タイムスライスベースで定義され、時間窓内で最近受領した少なくとも1つの入力されたNRTデータストリームの一部分を含む。他の実施例では、バッチは、バッチサイズベースで定義され、最近受領した少なくとも1つの入力されたNRTデータストリームのデータサイズが制約された部分を含む。
一実施例では、非プログラミングユーザ向けの、熟練オペレータ用のエンティティ関与ワークフローの分析を単純化する方法を説明する。本方法は、熟練オペレータによって起動された様々なエンティティ体験動作に関する複数のイベントストリームを受領する工程を含む。本方法はまた、複数の時間窓の間に、エンティティ体験動作のイベントストリームからエンティティ活動レベルを決定する工程を含む。本方法は、個々のエンティティ体験動作に関して、各エンティティ活動レベルに基づいて、複数のエンティティを複数の状態タイプに分類する工程を含む。本方法は更に、各エンティティオペレータに向けた表示のための視覚表示データを生成する。視覚表示データは、各エンティティ体験動作及び当該エンティティ体験動作の各状態に関する複数のイベントストリームと、タイムラインに沿ったエンティティ活動レベル及び当該レベルの変化と、複数の状態タイプと、ある状態から別の状態へのエンティティ遷移の経緯(trails)と、特定の状態タイプに属するエンティティ数に基づく当該状態タイプのサイズと、データエントリカラムナを描写する。データエントリカラムナは、出力メッセージングチャネル、メッセージング動作、メッセージ動作によって生成されるメッセージに取り込み、含める資源(asset)を指定する、選択可能な遷移−応答動作に関する宣言的入力を受け付ける。
開示された技術の本章及び他の章に記載した方法は、以下の特徴、及び/又は、開示された追加の方法に関連して記載された特徴の1以上を含むことができる。簡潔性のために、本出願で開示された特徴の組み合わせは、個々に列挙することはせず、特徴の基本となるセット毎に繰り返すこともない。読者は、本方法で識別される特徴が、専門用語、序論、IoTプラットフォーム及びストリーム−バッチ処理フレームワーク、ステートマシン、データカラムナ、フローチャート、マルチテナント統合、幾つかの特定の実施例等といった、実施例として識別される基本の特徴のセットと如何に容易に組み合わせられるかを理解するであろう。
一実施例では、視覚表示データは、リッチコンテクスチュアルデータストア110に格納される。
一実施例では、視覚表示データは、時間をかけてリプレイすることで複数の状態タイプ間でのエンティティの遷移を視覚化するリプレイ制御を備える。
別の実施例では、本方法は更に、同様の状態タイプのエンティティが状態クラウド内でグループ化されて示され、エンティティ状態遷移が最初の状態クラウドから最後の状態クラウドまでの遷移の経緯として示された状態遷移グラフを構築し、状態遷移を示すために状態クラウドと遷移の経緯を視覚的にコード化する工程を含む。
幾つかの実施例では、遷移の経緯の視覚的なコード化が、対応する最後の状態クラウドの視覚的なコード化と一致する。
別の実施例では、本方法は更に、同様の状態タイプのエンティティが状態バブル内でグループ化されて示され、エンティティ状態遷移が最初の状態バブルから最後の状態バブルまでの遷移アーチ(arches)として示された状態遷移グラフを構築し、状態遷移を示すために状態バブルと遷移アーチを視覚的にコード化する工程を含む。
更に別の実施例では、本方法は更に、状態クラウドと状態バブルのナビゲーションの際にホバーパネル(hover panel)データを、表示のために生成する。幾つかの実施例では、ホバーパネルデータは、当該状態タイプのエンティティを分類するための基準、当該状態タイプのエンティティ数、一定期間における数の変化、状態遷移に応答して実施される選択可能な動作を制御する条件を識別する。
幾つかの実施例では、イベントストリームは、メッセージバス及びストリーム処理システムを備える準リアルタイム(NRT)イベント管理フレームワークから受領される。
他の実施例では、イベントストリームは、ユーザクリックデータ、ユーザ購買行動、装置データ、ソーシャルメディアストリームの内、少なくとも1つを含む。
更なる実施例では、メッセージバスは、Kafka、Flume、ActiveMQ、RabbitMQの内、少なくとも1つである。
また更なる実施例では、ストリーム処理システムは、StormとSparkの内、少なくとも1つである。
ここに開示された技術には、ストリームとバッチ処理フレームワークの組み合わせを用いてグラフィカル表現を記述するシステム及び方法も含まれる。開示された本技術は、統合された、異機種環境の(heterogeneous)ステートマシン上での、超高速の、任意の(ad hoc)データ探索及び、ファセットナビゲーションに関する。開示された装置及び方法は、デスクトップ及びモバイルのアプリケーション環境の両方に対して、ライブダッシュボード上にレンダーされたライブデータの共有を可能にするグラフィックを記述するために用いることができる。
本章で記載された方法の他の実施例は、上記で述べた方法の何れかを実行するために、プロセッサによって実行可能な命令を格納する非一時的なコンピュータ可読記憶媒体を備えることができる。本章で記載された方法の更に他の実施例は、上記で述べた方法の何れかを実行するために、上記で述べたメモリと、当該メモリに格納された命令を実行する動作が可能な1以上のプロセッサを備えることができる。
一実施例では、開示された技術によって、マーケティング担当者等の非技術ユーザが、電子メール又はモバイルプッシュイベント経由してユーザと相互に作用するための一連の経路を定義して、1行のコードも使うことなくユーザに接触することが可能となる。別の実施例では、開示された技術は、非技術ユーザに、通常は専門の開発者によって実施されるより複雑な問題解決法を必要とする相互作用を定義することを可能にする。
一実施例では、開示された技術は、ユーザとブランドの持続可能な関係を作成するアプリケーションを構築することを目的とする多段階の良好なアプリケーション体験管理を実施する。良好なアプリケーション体験管理は、発見、開始、内容(context)、第1相互作用、達成(fulfillment)、放棄、育成(nurture)、共有の8つの段階で構成され、それらの全ては、開示された技術を用いて非技術ユーザによって簡単にコード化され、自動化されることが可能である。
フォローアップは自動化されていなければ、簡単に忘れられる。会社の担当者は、取引を締結させる際の迅速なフォローアップの重要性を認識している一方で、多忙なためにそれを優先させることができないということがしばしばある。彼らの探知をカバーして、関係を再構築するのに時間を費やすのではなく、会社の担当者は、状況に応じて適切なフォローアップを定義するために、開示されたマーケティング自動化システムを使用することが考えられる。開示された技術の一実施例に従って、ユーザへのメッセージを、会社の担当者が各連絡先と定期的に接点が得られるように、自動化し、個人向けに変更することが可能となり、手動のタスクに費やす時間を減らし、取引の締結に集中することができる。フォローアップの自動化により、ユーザは会社の担当者から無視される可能性がかなり低くなり、競争相手に奪われる機会も減る。更に、定期的な接点を持つことで、会社の担当者は、キャンペーンサイクルの間中ずっと、連絡先に付き添うことができる。
一実施例では、開示された技術は、電子メールマーケテイングやユーザ育成を含む自動化された通信及びマーケティングプログラムによって、非技術ユーザ向けに、キャンペーンの作成を合理化する。
一実施例では、開示された技術は、複雑な販売サイクルを持つ会社向けに、売り上げを増加し、効率を最大化するよう設計されたマーケティング自動化プラットフォームを提供する。これにより、マーケティング及び販売部署は、1つの中心となるプラットフォームで、ユーザとの相互作用及びオンラインのマーケティングキャンペーンを管理することが可能となる。
一実施例では、開示された技術は、フォーム、ページの閲覧、コンテンツのダウンロード、電子メール、社会的な相互作用等を含む、販売サイクルの全期間に亘るユーザとの全ての接点をリアルタイムで探知するマイクロレベルの分析を含む。
一実施例では、開示された技術は、事前に定義された規則及び時間間隔に基づいたユーザに対する電子メールの送信、及び、その他の通信を含む、自動化されたユーザ育成も可能にする。他の実施例では、開示された技術は、いつユーザが積極的で、キャンペーンに参加しようとしているかを会社に知らせる、カスタマイズ可能なリアルタイム通知を提供する。
一実施例では、開示された技術は、非技術ユーザが、動的で、ブランド化され(branded)、個人向けに変更されたオンラインマーケティングキャンペーン及び電子メールを容易に作成することができるウィザード及びツールを提供する。
一実施例では、開示されたIoTプラットフォームは、バッチ処理用の(Scalding又はCascadingを介した)Hadoop、及び、イベント処理用のStormを、ハイブリッド的に利用して、バッチ及びイベント結果を透過的に統合し、効果的に準リアルタイム分析を生成することができる。
開示された技術の本章及び他の章で説明した実施及び特徴は、以下の特徴、及び/又は、開示された追加の方法に関連して記載された特徴の1以上を含むことができる。簡潔性のために、本出願で開示された特徴の組み合わせは、個々に列挙することはせず、特徴の基本となるセット毎に繰り返すこともない。読者は、本方法で識別される特徴が、専門用語、序論、IoTプラットフォーム、ストリーム−バッチ処理フレームワーク、ステートマシン、データカラムナ、フローチャート、マルチテナント統合、幾つかの特定の実施例等といった、実施例として識別される基本の特徴のセットと如何に容易に組み合わせられるかを理解するであろう。
1つのサーバ側の実施例において、非プログラミングユーザ向けのエンティティ管理ワークフローの作成を単純化する方法を説明する。本方法は、エンティティとの相互作用を自動的に多段階で進行させるステートマシンを指定する宣言的入力を受け付けるデータエントリカラムナを、表示のために、生成する工程を備える。幾つかの実施例では、データエントリカラムナは、多段階進行における状態に関する少なくとも1つのカラム、タイムベース遷移トリガー、イベントベース遷移トリガー、条件の定義、状態遷移に応じた択一的な動作を含む。
本方法はまた、一定の期間が過ぎると状態遷移を引き起こすタイマー、及び、状態遷移を引き起こすイベントによって、択一的に指定される状態遷移トリガーを定義するデータエントリカラムナへの入力を示すデータを受領する工程を備える。
本方法は、状態遷移中に条件を、当該条件が参照するデータベースフィールドの少なくとも1つの値に対して、評価する工程を備える。
本方法は更に、条件が満足されることに応答して、状態遷移中に択一的な動作を実行する工程を備える。
開示された技術の本章及び他の章で記載した方法は、以下の特徴、及び/又は、開示された追加の方法に関連して記載された特徴の1以上を含むことができる。簡潔性のために、本出願で開示された特徴の組み合わせは、個々に列挙することはせず、特徴の基本となるセット毎に繰り返すこともない。読者は、本方法で識別される特徴が、専門用語、序論、IoTプラットフォーム及びストリーム−バッチ処理フレームワーク、ステートマシン、データカラムナ、フローチャート、マルチテナント統合、幾つかの特定の実施例等といった、実施例として識別される基本の特徴のセットと如何に容易に組み合わせられるかを理解するであろう。
一実施例では、データエントリカラムナへの入力を示すデータは更に、状態遷移に応答した動作の実行に続いて得られる少なくとも1つの状態の仕様を含む。
別実施例では、データエントリカラムナへの入力を示すデータは更に、全ての状態に適用されるグローバルな状態遷移に応じた少なくとも1つの常時動作の仕様を含む。
更に別の実施例では、データエントリカラムナへの入力を示すデータは更に、エンティティの複数の状態の仕様を含む。
幾つかの実施例では、エンティティが電子機器の場合、当該電気機器の状態には、オン、オフ、スタンバイ、電源投入、電源切断、全電力のパーセンテージ、ネットワーク接続の範囲の内、少なくとも1つが更に含まれる。
幾つかの実施例では、エンティティがユーザの場合、ユーザの状態には、熱心な、移り気な、自然消滅の内、少なくとも1つを更に含む。
幾つかの実施例では、入力イベントを、メッセージバス及びストリーム処理システムを備える準リアルタイム(NRT)イベント管理フレームワークから受領する。一実施例では、入力イベントには、ユーザクリックデータ、ユーザ購買行動、装置データ、ソーシャルメディアストリームの内、少なくとも1つが含まれる。別の実施例では、メッセージバスは、Kafka、Flume、ActiveMQ、RabbitMQの内、少なくとも1つである。更に別の実施例では、ストリーム処理システムは、StormとSparkの内、少なくとも1つである。
本章で記載された方法の他の実施例は、上記で述べた方法の何れかを実行するために、プロセッサによって実行可能な命令を格納する非一時的なコンピュータ可読記憶媒体を備えることができる。本章で記載された方法の更に他の実施例は、上記で述べた方法の何れかを実行するために、メモリと、当該メモリに格納された命令を実行する動作が可能な1以上のプロセッサを備えることができる。
1つのクライアント側の実施例において、非プログラミングユーザ向けのエンティティ管理ワークフローの作成を単純化する方法を説明する。本方法は、エンティティとの相互作用を自動的に多段階で進行させるステートマシンを指定する宣言的入力を受け付けるデータエントリカラムナを受領する工程を備える。幾つかの実施例では、データエントリカラムナは、多段階進行における状態に関する少なくとも1つのカラム、タイムベース遷移トリガー、イベントベース遷移トリガー、条件の定義、状態遷移に応じた択一的な動作を含む。
本方法はまた、エンティティの複数の状態、一定の期間が過ぎると状態遷移を引き起こすタイマー及びイベント値が条件を満たすと状態遷移を引き起こす入力イベントによって択一的に指定される状態遷移トリガー、状態遷移に応じた動作の実行に続いて得られる少なくとも1つの状態、全ての状態に適用されるグローバルな状態遷移に応じた少なくとも1つの常時動作を定義するデータエントリカラムナへの入力を示すデータを送信する工程を備える。
本方法は更に、当該条件が、自身が取り込むデータベースフィールドの少なくとも1つの値に対して評価され、状態遷移に応答して実施される択一的な動作を制御する工程を更に含む。
開示された技術の本章及び他の章で記載した方法は、以下の特徴、及び/又は、開示された追加の方法に関連して記載された特徴の1以上を含むことができる。簡潔性のために、本出願で開示された特徴の組み合わせは、個々に列挙することはせず、特徴の基本となるセット毎に繰り返すこともない。読者は、本方法で識別される特徴が、専門用語、序論、IoTプラットフォーム及びストリーム−バッチ処理フレームワーク、ステートマシン、データカラムナ、フローチャート、マルチテナント統合、幾つかの特定の実施例等といった、実施例として識別される基本の特徴のセットと如何に容易に組み合わせられるかを理解するであろう。
一実施例では、データエントリカラムナへの入力を示すデータは更に、状態遷移に応答した動作の実行に続いて得られる少なくとも1つの状態の仕様を含む。
別の実施例では、データエントリカラムナへの入力を示すデータは更に、全ての状態に適用されるグローバルな状態遷移に応じた少なくとも1つの常時動作の仕様を更に含む。
更に別の実施例では、データエントリカラムナへの入力を示すデータは更に、エンティティの複数の状態の仕様を更に含む。
幾つかの実施例では、エンティティが電子機器の場合、当該電気機器の状態には、オン、オフ、スタンバイ、電源投入、電源切断、全電力のパーセンテージ、ネットワーク接続の範囲の内、少なくとも1つが更に含まれる。
幾つかの実施例では、エンティティがユーザの場合、ユーザの状態には、熱心な、移り気な、自然消滅の内、少なくとも1つを更に含む。
幾つかの実施例では、入力イベントを、メッセージバス及びストリーム処理システムを備える準リアルタイム(NRT)イベント管理フレームワークから受領する。一実施例では、入力イベントには、ユーザクリックデータ、ユーザ購買行動、装置データ、ソーシャルメディアストリームの内、少なくとも1つが含まれる。別の実施例では、メッセージバスは、Kafka、Flume、ActiveMQ、RabbitMQの内、少なくとも1つである。更に別の実施例では、ストリーム処理システムは、StormとSparkの内、少なくとも1つである。
本章で記載された方法の他の実施例は、上記で述べた方法の何れかを実行するために、プロセッサによって実行可能な命令を格納する非一時的なコンピュータ可読記憶媒体を備えることができる。本章で記載された方法の更に他の実施例は、上記で述べた方法の何れかを実行するために、メモリと、当該メモリに格納された命令を実行する動作が可能な1以上のプロセッサを備えることができる。
一実施例では、ロングテールを有するタスクシーケンスへのリソース割り当てを管理する方法は、マシン全体に亘って定義された異機種環境のコンテナ及び複数のマシンを含む幾つかのコンテナで、マシンリソースを含むコンピューティンググリッドを操作する工程を備える。本方法は、初めに複数のマシンを第1コンテナに割り当てる工程と、初めにステートフル(stateful)タスクシーケンスの第1セットを第1コンテナに割り当てる工程と、コンテナスケジューラの制御の下、第1コンテナにおいて多重化されたワーク単位でステートフルタスクシーケンスの第1セットを実行する工程を備え、第1タスクシーケンスに関する各ワーク単位は、第2タスクシーケンスに関する次のワーク単位が第1マシンリソース上で多重化されて実行される前に、タイムアウトを超過しない限り、第1コンテナにおける第1マシンリソース上で完了するまで実行される。本方法は更に、少なくとも1つのロングテールタスクシーケンスが、最初に割り当てられたリソースよりある程度少ないリソースを消費していることを検出する工程と、当該検出に応答して、第1コンテナに1以上の追加のステートフルタスクシーケンスを割り当てる、又は、第1コンテナから1以上のマシンの割り当てを解除する工程を備える。
ロングテールを有するタスクシーケンスへのリソース割り当てを管理する方法は、過剰なマシンリソースがタスクシーケンスの第1セットのみに充てられていることを検出する工程と、第1コンテナ内のマシンの第2サブセットを未使用のままにするために、第1コンテナ内のマシンの第1サブセットに対してタスクシーケンスの第1セットをスケジューリングする工程と、第1コンテナからマシンの第2サブセットの割り当てを自動的に解除する工程を備える。
一実施例では、開示された方法は、過剰なマシンリソースがタスクシーケンスの第1セットのみに充てられていることを検出する工程と、第1コンテナに追加のステートフルタスクシーケンスを自動的に割り当てる工程を更に備える。開示された方法では、第1コンテナ内で実行されるタスクシーケンスの数を4から20まで増やすことができる。
幾つかの実施例では、急増するタスクシーケンスへのリソースの割り当てを管理する開示された方法は、マシン全体に亘って定義された異機種環境のコンテナ及び複数のマシンを含む幾つかのコンテナで、マシンリソースを含むコンピューティンググリッドを操作する工程を備える。本方法は、初めに複数のマシンを第1コンテナに割り当てる工程と、初めにステートフルタスクシーケンスの第1セットを第1コンテナに割り当てる工程と、コンテナスケジューラの制御の下、第1コンテナにおいて多重化されたワーク単位でステートフルタスクシーケンスの第1セットを実行する工程を備え、第1タスクシーケンスに関する各ワーク単位は、第2タスクシーケンスに関する次のワーク単位が第1マシンリソース上で多重化されて実行される前に、タイムアウトを超過しない限り、第1コンテナにおける第1マシンリソース上で完了するまで実行される。本方法は更に、少なくとも1つのタスクシーケンスが、最初に割り当てられたリソースよりある程度多いリソースを必要としていることを検出する工程と、第1コンテナに割り当てられた複数のマシンが所定の最大値にまだ達していないことを判定する工程と、第1コンテナにより多くのマシンを自動的に割り当てる、又は、第1コンテナから第2コンテナにタスクシーケンスの第1セット内の幾つかのタスクシーケンスを再割り当てする工程を備える。開示された方法は、第1コンテナ内でタスクシーケンスの第1セットを実行する際に所定の閾値を超える待ち時間を検出する工程と、第1コンテナに追加のマシンを自動的に割り当てる工程と、第1コンテナ内の複数のマシンと追加のマシンに対して、タスクシーケンスの第1セットに関してワーク単位をスケジューリングする工程を備える。第1コンテナ内のマシンの数は、8から10まで増やすことができる。開示された方法は、第1コンテナ内でタスクシーケンスの第1セットを実行する際に所定の閾値を超える待ち時間を検出する工程と、第1コンテナに割り当てられた複数のマシンが所定の最大値に達したこと、及び、マシンがタスクシーケンスの第1セットにこれ以上割り当てられないことを判定する工程を備える。
急増するタスクシーケンスへのリソースの割り当てを管理する開示された方法は、実行中、タスクシーケンスの第1セットの状態情報を維持する(persist)工程と、第1コンテナ内でタスクシーケンスの第1セットを実行する際に所定の閾値を超える待ち時間を検出する工程と、第1コンテナから第2コンテナにタスクシーケンスの第2サブセットを自動的に再割り当てする一方で、タスクシーケンスの第1サブセットを第1コンテナに割り当てたままにしておく工程を備える。本方法は更に、第2コンテナでタスクシーケンスの第2サブセットを初期化するために、維持された状態情報を用いる工程、第1コンテナのタスクシーケンスの第1サブセットと、第2コンテナのタスクシーケンスの第2サブセットに関してワーク単位をスケジューリングする工程を備える。
一実施例では、欠陥タスクシーケンスへのリソース割り当てを管理する方法は、最初に第1コンテナにステートフルタスクシーケンスの第1セットを割り当てる工程と、再生可能な入力ソースから入力を受け取り、当該入力を処理するためにタスクシーケンスのステートフルな第1セットを起動する工程と、コンテナスケジューラの制御の下で、第1コンテナ内でステートフルタスクシーケンスの第1セットを多重化されたワーク単位で実行する工程を備え、第1タスクシーケンスに関する各ワーク単位は、第2タスクシーケンスに関する次のワーク単位が第1マシンリソース上で多重化されて実行される前に、タイムアウトを超過しない限り、第1コンテナにおける第1マシンリソース上で完了するまで実行される。本方法は更に、実行中、タスクシーケンスの第1セットの状態情報を維持する工程と、所定のタイムアウト閾値を超える欠陥タスクシーケンスにおけるワーク単位の実行時間を検出する工程と、欠陥タスクシーケンスの維持された状態情報を自動的に再ロードして欠陥タスクシーケンスを再度開始させる工程を備える。本方法はまた、欠陥タスクシーケンスへの再生可能な入力を上記検出よりも前で、且つ、欠陥タスクシーケンスに関して維持された状態情報と同期する時点まで、自動的に巻き戻す工程と、所定のタイムアウト閾値を超えることなくワーク単位の完了まで欠陥タスクシーケンスを再実行する工程とを備える。
欠陥タスクシーケンスへのリソース割り当てを管理する方法は更に、第1コンテナから第2コンテナに欠陥タスクシーケンスを再度割り当てる工程と、第2コンテナで欠陥タスクシーケンスの維持された状態情報を再ロードすることで、第2コンテナで欠陥タスクシーケンスを再度開始する工程と、欠陥タスクシーケンスへの再生可能な入力を上記検出よりも前で、且つ、欠陥タスクシーケンスに関して維持された状態情報と同期する時点まで、巻き戻す工程と、所定のタイムアウト閾値を超えることなくワーク単位の完了まで欠陥タスクシーケンスを再実行する工程を備える。
一実施例では、ロングテールを有するタスクシーケンスへのリソース割り当てを管理する方法は、マシン全体に亘って定義された異機種環境のコンテナ及び複数のマシンを含む幾つかのコンテナで、マシンリソースを含むコンピューティンググリッドを操作する工程を備える。本方法は、初めに複数のマシンを第1コンテナに割り当てる工程と、初めにステートフルタスクシーケンスの第1セットを第1コンテナに割り当てる工程と、コンテナスケジューラの制御の下、第1コンテナにおいて多重化されたワーク単位でステートフルタスクシーケンスの第1セットを実行する工程を備え、第1タスクシーケンスに関する各ワーク単位は、第2タスクシーケンスに関する次のワーク単位が第1マシンリソース上で多重化されて実行される前に、タイムアウトを超過しない限り、第1コンテナにおける第1マシンリソース上で完了するまで実行される。本方法は更に、少なくとも1つのロングテールタスクシーケンスが、最初に割り当てられたリソースよりある程度少ないリソースを消費していることを検出する工程と、当該検出に応答して、第1コンテナに1以上の追加のステートフルタスクシーケンスを割り当てる、又は、第1コンテナから1以上のマシンの割り当てを解除する工程を備える。
ロングテールを有するタスクシーケンスへのリソース割り当てを管理する方法は、過剰なマシンリソースがタスクシーケンスの第1セットのみに充てられていることを検出する工程と、第1コンテナ内のマシンの第2サブセットを未使用のままにするために、第1コンテナ内のマシンの第1サブセットに対してタスクシーケンスの第1セットをスケジューリングする工程と、第1コンテナからマシンの第2サブセットの割り当てを自動的に解除する工程を備える。
一実施例では、開示された方法は、過剰なマシンリソースがタスクシーケンスの第1セットのみに充てられていることを検出する工程と、第1コンテナに追加のステートフルタスクシーケンスを自動的に割り当てる工程を更に備える。開示された方法は、第1コンテナ内で実行されるタスクシーケンスの数を4から20まで増やすことができる。
幾つかの実施例では、急増するタスクシーケンスへのリソースの割り当てを管理する開示された方法は、マシン全体に亘って定義された異機種環境のコンテナ及び複数のマシンを含む幾つかのコンテナで、マシンリソースを含むコンピューティンググリッドを操作する工程を備える。本方法は、初めに複数のマシンを第1コンテナに割り当てる工程と、初めにステートフルタスクシーケンスの第1セットを第1コンテナに割り当てる工程と、コンテナスケジューラの制御の下、第1コンテナにおいて多重化されたワーク単位でステートフルタスクシーケンスの第1セットを実行する工程を備え、第1タスクシーケンスに関する各ワーク単位は、第2タスクシーケンスに関する次のワーク単位が第1マシンリソース上で多重化されて実行される前に、タイムアウトを超過しない限り、第1コンテナにおける第1マシンリソース上で完了するまで実行される。本方法は更に、少なくとも1つのタスクシーケンスが、最初に割り当てられたリソースよりある程度多いリソースを必要としていることを検出する工程と、第1コンテナに割り当てられた複数のマシンが所定の最大値にまだ達していないことを判定する工程と、第1コンテナにより多くのマシンを自動的に割り当てる、又は、第1コンテナから第2コンテナにタスクシーケンスの第1セット内の幾つかのタスクシーケンスを再割り当てする工程を備える。開示された方法は、第1コンテナ内でタスクシーケンスの第1セットを実行する際に所定の閾値を超える待ち時間を検出する工程と、第1コンテナに追加のマシンを自動的に割り当てる工程と、第1コンテナ内の複数のマシンと追加のマシンに対して、タスクシーケンスの第1セットのワーク単位をスケジューリングする工程を備える。第1コンテナ内のマシンの数は、8から10まで増やすことができる。開示された方法は、第1コンテナ内でタスクシーケンスの第1セットを実行する際に所定の閾値を超える待ち時間を検出する工程と、第1コンテナに割り当てられた複数のマシンが所定の最大値に達したこと、及び、マシンがタスクシーケンスの第1セットにこれ以上割り当てられないことを判定する工程を備える。
急増するタスクシーケンスへのリソースの割り当てを管理する開示された方法は、実行中、タスクシーケンスの第1セットの状態情報を維持する工程と、第1コンテナ内でタスクシーケンスの第1セットを実行する際に所定の閾値を超える待ち時間を検出する工程と、第1コンテナから第2コンテナにタスクシーケンスの第2サブセットを自動的に再割り当てする一方で、タスクシーケンスの第1サブセットは第1コンテナに割り当てられたままにしておく工程を備える。本方法は更に、第2コンテナでタスクシーケンスの第2サブセットを初期化するために、維持された状態情報を用いる工程、第1コンテナのタスクシーケンスの第1サブセットと、第2コンテナのタスクシーケンスの第2サブセットに関してワーク単位をスケジューリングする工程を備える。
一実施例では、欠陥タスクシーケンスへのリソース割り当てを管理する方法は、最初に第1コンテナにステートフルタスクシーケンスの第1セットを割り当てる工程と、再生可能な入力ソースから入力を受け取り、当該入力を処理するためにタスクシーケンスのステートフル第1セットを起動する工程と、コンテナスケジューラの制御の下で、第1コンテナ内でステートフルタスクシーケンスの第1セットを多重化されたワーク単位で実行する工程を備え、第1タスクシーケンスに関する各ワーク単位は、第2タスクシーケンスに関する次のワーク単位が第1マシンリソース上で多重化されて実行される前に、タイムアウトを超過しない限り、第1コンテナにおける第1マシンリソース上で完了するまで実行される。本方法は更に、実行中、タスクシーケンスの第1セットの状態情報を維持する工程と、所定のタイムアウト閾値を超える欠陥タスクシーケンスにおけるワーク単位の実行時間を検出する工程と、欠陥タスクシーケンスの維持された状態情報を自動的に再ロードして欠陥タスクシーケンスを再度開始させる工程を備える。本方法はまた、欠陥タスクシーケンスへの再生可能な入力を上記検出よりも前で、且つ、欠陥タスクシーケンスに関して維持された状態情報と同期する時点まで、自動的に巻き戻す工程と、所定のタイムアウト閾値を超えることなくワーク単位の完了まで欠陥タスクシーケンスを再実行する工程とを備える。
欠陥タスクシーケンスへのリソース割り当てを管理する方法は更に、第1コンテナから第2コンテナに欠陥タスクシーケンスを再度割り当てる工程と、第2コンテナで欠陥タスクシーケンスの維持された状態情報を再ロードすることで、第2コンテナで欠陥タスクシーケンスを再度開始する工程と、欠陥タスクシーケンスへの再生可能な入力を上記検出よりも前で、且つ、欠陥タスクシーケンスに関して維持された状態情報と同期する時点まで、巻き戻す工程と、所定のタイムアウト閾値を超えることなくワーク単位の完了まで欠陥タスクシーケンスを再実行する工程を備える。
一実施例では、ストリーム処理システムの限られた数のワーカーノード上のロングテールタスクシーケンスを含む複数のタスクシーケンスを処理する方法は、物理スレッドを有し、1つの物理スレッドがワーカーノードのプロセッサコア全体を利用するワーカーノードに対して、コンテナを定義する工程を備える。本方法はまた、複数のタスクシーケンスに関して、コンテナで実行されるパイプラインに、入力された準リアルタイム(NRT)データストリームからのデータを待ち行列に追加する工程と、NRTデータストリームからのデータをバッチとして、当該バッチのディスパッチを制御するコンテナコーディネータを用いて処理する工程と、当該バッチを物理スレッドにディスパッチする工程を備え、バッチは完了又はタイムアウトまで実行され、実行中は利用可能な物理スレッドのカウントが論理的に並行なスレッドの設定数と比較される。本方法は更に、利用可能な物理スレッドのカウントが、論理的に並行なスレッドの数と等しい、又は、それを超える場合は、物理スレッドでバッチを同時に処理し、利用可能な物理スレッドが論理的に並行なスレッドの数よりも少ない場合は、利用可能な物理スレッドに対してバッチを順番に多重化する工程を備える。
幾つかの実施例では、開示された方法は更に、パイプライン内の少なくとも1つのバッチのサブセットを、パイプライン内の少なくとも1つの別のバッチのサブセットと同時に処理する工程と、当該両サブセットの少なくとも幾つかのバッチを順番に多重化する工程を備える。幾つかの実施例では、論理的に並行なスレッドの数は10であり、利用可能な物理スレッドのカウントは10であり、本方法は更に、10個の利用可能な物理スレッドにおけるパイプラインのバッチを同時に処理する工程を備える。他の実施例では、論理的に並行なスレッドの数は10であり、利用可能な物理スレッドのカウントは9である。開示された方法は更に、9個の利用可能な物理スレッドの内、8個で、パイプライン内のバッチを同時に処理する工程と、少なくとも1個の利用可能な物理スレッドについて、パイプライン内の幾つかのバッチを、順番に多重化する工程を備える。
別の実施例では、論理的に並行なスレッドの数は10であり、利用可能な物理スレッドのカウントは1であり、1個の利用可能な物理スレッドに対して、パイプライン内のバッチを順番に多重化する工程が含まれる。多重化には、パイプラインで次のバッチを処理する前に、完了又はタイムアウトまで、パイプラインでバッチを処理する工程を含むことが可能である。
幾つかの実施例では、開示された方法は更に、コンテナ内の複数のワーカーノードに対して、複数のパイプラインを同時に処理する工程を含むことが可能である。
バッチは、幾つかの実施例に関しては、タイムスライスベースで定義され、時間窓内で最近受け取った少なくとも1つの入力されたNRTデータストリームの一部分を含む。他の実施例では、バッチは、バッチサイズベースで定義され、最近受け取った少なくとも1つの入力されたNRTデータストリームのデータサイズが制約された部分を含む。
一実施例では、ロングテールを有するタスクシーケンスへのリソース割り当てを管理する方法は、マシン全体に亘って定義された異機種環境のコンテナ及び複数のマシンを含む幾つかのコンテナで、マシンリソースを含むコンピューティンググリッドを操作する工程を備える。本方法は、初めに複数のマシンを第1コンテナに割り当てる工程と、初めにステートフルタスクシーケンスの第1セットを第1コンテナに割り当てる工程と、コンテナスケジューラの制御の下、第1コンテナにおいて多重化されたワーク単位でステートフルタスクシーケンスの第1セットを実行する工程を備え、第1タスクシーケンスに関する各ワーク単位は、第2タスクシーケンスに関する次のワーク単位が第1マシンリソース上で多重化されて実行される前に、タイムアウトを超過しない限り、第1コンテナにおける第1マシンリソース上で完了するまで実行される。本方法は更に、少なくとも1つのロングテールタスクシーケンスが、最初に割り当てられたリソースよりある程度少ないリソースを消費していることを検出する工程と、当該検出に応答して、第1コンテナに1以上の追加のステートフルタスクシーケンスを割り当てる、又は、第1コンテナから1以上のマシンの割り当てを解除する工程を備える。
ロングテールを有するタスクシーケンスへのリソース割り当てを管理する方法は、過剰なマシンリソースがタスクシーケンスの第1セットのみに充てられていることを検出する工程と、第1コンテナ内のマシンの第2サブセットを未使用のままにするために、第1コンテナ内のマシンの第1サブセットに対してタスクシーケンスの第1セットをスケジューリングする工程と、第1コンテナからマシンの第2サブセットの割り当てを自動的に解除する工程を備える。
一実施例では、開示された方法は、過剰なマシンリソースがタスクシーケンスの第1セットのみに充てられていることを検出する工程と、第1コンテナに追加のステートフルタスクシーケンスを自動的に割り当てる工程を更に備える。開示された方法は、第1コンテナ内で実行されるタスクシーケンスの数を4から20まで増やすことができる。
幾つかの実施例では、急増するタスクシーケンスへのリソースの割り当てを管理する開示された方法は、マシン全体に亘って定義された異機種環境のコンテナ及び複数のマシンを含む幾つかのコンテナで、マシンリソースを含むコンピューティンググリッドを操作する工程を備える。本方法は、初めに複数のマシンを第1コンテナに割り当てる工程と、初めにステートフルタスクシーケンスの第1セットを第1コンテナに割り当てる工程と、コンテナスケジューラの制御の下、第1コンテナにおいて多重化されたワーク単位でステートフルタスクシーケンスの第1セットを実行する工程を備え、第1タスクシーケンスに関する各ワーク単位は、第2タスクシーケンスに関する次のワーク単位が第1マシンリソース上で多重化されて実行される前に、タイムアウトを超過しない限り、第1コンテナにおける第1マシンリソース上で完了するまで実行される。本方法は更に、少なくとも1つのタスクシーケンスが、最初に割り当てられたリソースよりある程度多いリソースを必要としていることを検出する工程と、第1コンテナに割り当てられた複数のマシンが所定の最大値にまだ達していないことを判定する工程と、第1コンテナにより多くのマシンを自動的に割り当てる、又は、第1コンテナから第2コンテナにタスクシーケンスの第1セット内の幾つかのタスクシーケンスを再割り当てする工程を備える。開示された方法は、第1コンテナ内でタスクシーケンスの第1セットを実行する際に所定の閾値を超える待ち時間を検出する工程と、第1コンテナに追加のマシンを自動的に割り当てる工程と、第1コンテナ内の複数のマシンと追加のマシンに対して、タスクシーケンスの第1セットのワーク単位をスケジューリングする工程を備える。第1コンテナ内のマシンの数は、8から10まで増やすことができる。開示された方法は、第1コンテナ内でタスクシーケンスの第1セットを実行する際に所定の閾値を超える待ち時間を検出する工程と、第1コンテナに割り当てられた複数のマシンが所定の最大値に達したこと、及び、マシンがタスクシーケンスの第1セットにこれ以上割り当てられないことを判定する工程を備える。
急増するタスクシーケンスへのリソースの割り当てを管理する開示された方法は、実行中、タスクシーケンスの第1セットの状態情報を維持する工程と、第1コンテナ内でタスクシーケンスの第1セットを実行する際に所定の閾値を超える待ち時間を検出する工程と、第1コンテナから第2コンテナにタスクシーケンスの第2サブセットを自動的に再割り当てする一方で、タスクシーケンスの第1サブセットを第1コンテナに割り当てられたままにしておく工程を備える。本方法は更に、第2コンテナでタスクシーケンスの第2サブセットを初期化するために、維持された状態情報を用いる工程、第1コンテナのタスクシーケンスの第1サブセットと、第2コンテナのタスクシーケンスの第2サブセットに関してワーク単位をスケジューリングする工程を備える。
一実施例では、欠陥タスクシーケンスへのリソース割り当てを管理する方法は、最初に第1コンテナにステートフルタスクシーケンスの第1セットを割り当てる工程と、再生可能な入力ソースから入力を受け取り、当該入力を処理するために、タスクシーケンスのステートフルな第1セットを起動する工程と、コンテナスケジューラの制御の下に、第1コンテナ内でステートフルタスクシーケンスの第1セットを多重化されたワーク単位で実行する工程を備え、第1タスクシーケンスに関する各ワーク単位は、第2タスクシーケンスに関する次のワーク単位が第1マシンリソース上で多重化されて実行される前に、タイムアウトを超過しない限り、第1コンテナにおける第1マシンリソース上で完了するまで実行される。本方法は更に、実行中、タスクシーケンスの第1セットの状態情報を維持する工程と、所定のタイムアウト閾値を超える欠陥タスクシーケンスにおけるワーク単位の実行時間を検出する工程と、欠陥タスクシーケンスの維持された状態情報を自動的に再ロードして欠陥タスクシーケンスを再度開始させる工程を備える。本方法はまた、欠陥タスクシーケンスへの再生可能な入力を上記検出よりも前で、且つ、欠陥タスクシーケンスに関して維持された状態情報と同期する時点まで、自動的に巻き戻す工程と、所定のタイムアウト閾値を超えることなくワーク単位の完了まで欠陥タスクシーケンスを再実行する工程を備える。
欠陥タスクシーケンスへのリソース割り当てを管理する方法は更に、第1コンテナから第2コンテナに欠陥タスクシーケンスを再度割り当てる工程と、第2コンテナで欠陥タスクシーケンスの維持された状態情報を再ロードすることで、第2コンテナで欠陥タスクシーケンスを再度開始する工程と、欠陥タスクシーケンスへの再生可能な入力を上記検出よりも前で、且つ、欠陥タスクシーケンスに関して維持された状態情報と同期する時点まで、巻き戻す工程と、所定のタイムアウト閾値を超えることなくワーク単位の完了まで欠陥タスクシーケンスを再実行する工程を備える。
一実施例における、ストリーム処理システムの限られた数のワーカーノード上でのロングテールタスクシーケンスを含む複数のタスクシーケンスを処理する方法は、物理スレッドを有し、1つの物理スレッドがワーカーノードのプロセッサコア全体を利用するワーカーノードに対して、コンテナを定義する工程を備える。本方法はまた、複数のタスクシーケンスに関して、コンテナで実行されるパイプラインに、入力された準リアルタイム(NRT)データストリームからのデータを待ち行列に追加する工程と、NRTデータストリームからのデータをバッチとして、当該バッチのディスパッチを制御するコンテナコーディネータを用いて処理する工程と、当該バッチを物理スレッドにディスパッチする工程を備え、バッチは完了又はタイムアウトまで実行され、実行中は利用可能な物理スレッドのカウントと、論理的に並行なスレッドの設定数が比較される。本方法は更に、利用可能な物理スレッドのカウントが、論理的に並行なスレッドの数と等しい、又は、それを超える場合は、物理スレッドでバッチを同時に処理する工程と、利用可能な物理スレッドが論理的に並行なスレッドの数よりも少ない場合は、利用可能な物理スレッドに対してバッチを順番に多重化する工程を備える。
幾つかの実施例では、開示された本方法は、パイプライン内の少なくとも1つのバッチのサブセットを、パイプライン内の少なくとも1つの別のバッチのサブセットと同時に処理する工程と、当該両サブセットの少なくとも幾つかのバッチを順番に多重化する工程を備える。幾つかの実施例では、論理的に並行なスレッドの数は10であり、利用可能な物理スレッドのカウントは10である。本発明は更に、10個の利用可能な物理スレッドでパイプライン内の複数のバッチを同時に処理する工程を備えることが可能である。他の実施例では、論理的に並行なスレッドの数は10であり、利用可能な物理スレッドのカウントは9である。開示された本方法は更に、9個の利用可能な物理スレッドの内、8個で、パイプライン内の複数のバッチを同時に処理する工程と、少なくとも1個の利用可能な物理スレッドについて、パイプライン内の幾つかのバッチを、順番に多重化する工程を備える。
別の実施例では、論理的に並行なスレッドの数は10であり、且つ、利用可能な物理スレッドのカウントは1であり、1個の利用可能な物理スレッドに対して、パイプライン内のバッチを順番に多重化する工程が含まれる。多重化には、パイプラインで次のバッチを処理する前に、完了又はタイムアウトまで、パイプラインでバッチを処理する工程を含むことが可能である。
幾つかの実施例では、開示された本方法は更に、コンテナ内の複数のワーカーノードに対して、複数のパイプラインを同時に処理する工程を含むことが可能である。
バッチは、幾つかの実施例に関しては、タイムスライスベースで定義され、時間窓内で最近受け取った少なくとも1つの入力されたNRTデータストリームの一部分を含む。他の実施例では、バッチは、バッチサイズベースで定義され、最近受け取った少なくとも1つの入力されたNRTデータストリームのデータサイズが制約された部分を含む。

<ワークロード管理を備えたステートマシン装置の構成>
一実施例では、非プログラミングユーザ向けの、エンティティ管理ワークフローの作成を単純化する方法を説明する。本方法は、人間−機械の相互作用に依存せずに機械によって生成された機械生成イベントを処理するワークフローステートマシンにおいて、複数のケース−ステータス状態を表示する工程と、第1イベントの後の少なくとも第1ケース−ステータス状態の間に、入力された第2イベントを無視するか、又は、処理するかを決定するために、イベントプリプロセッサによって使用されるイベントフィルタリング条件をメモリに記録する工程を備える。本方法はまた、イベントフィルタリング条件の整数のカウントパラメータを初期化する工程を備え、当該カウントパラメータは、一定の期間内の回数に制限を指定し、当該制限を越えると合致する特徴を持った追加のイベントは無視又は放棄される。本方法は更に、入力された機械生成イベントを処理する命令をワークフローエンジンステートマシン装置にロードする工程と、少なくともケース−ステータス状態及びイベントフィルタリング条件に応じて選択された命令を実行する工程を備える。
1つのサーバ側の実施例において、非プログラミングユーザ向けの、エンティティ管理ワークフローの作成を単純化する方法を説明する。本方法は、エンティティとの相互作用を自動的に多段階で進行させるステートマシンを指定する宣言的入力を受け付けるデータエントリカラムナを、表示のために、生成するステートマシンビルダーを備える。幾つかの実施例では、データエントリカラムナは、多段階進行における状態に関する少なくとも1つのカラム、タイムベース遷移トリガー、イベントベース遷移トリガー、条件の定義、タイムベース遷移トリガーとイベントベース遷移トリガーの少なくとも1つによって生じる状態遷移に応じた択一的な動作を含む。
本方法はまた、一定の期間が経過すると状態遷移を引き起こすタイマーによって、及び、状態遷移を引き起こすイベントによって、択一的に指定される状態遷移トリガーを定義するデータエントリカラムナへの宣言的入力を受領する工程を備える。
本方法は更に、タイムベース遷移トリガーとイベントベース遷移トリガーの少なくとも1つによって生じる状態遷移に応答して実行される、選択された択一的な動作を指定するデータエントリカラムナへの宣言的入力を受領する工程と、当該宣言的入力、又は、当該宣言的入力を用いてステートマシン装置が構築したワークフローを保存する工程を備える。
本方法は更に、条件が満足されることに応答して、ステートマシン装置の遷移プロセッサが、状態遷移の間に択一的な動作の実行を起動する工程を備える。
開示された技術の本章及び他の章で記載した方法は、以下の特徴、及び/又は、開示された追加の方法に関連して記載された特徴の1以上を含むことができる。簡潔性のために、本出願で開示された特徴の組み合わせは、個々に列挙することはせず、特徴の基本となるセット毎に繰り返すこともない。読者は、本方法で識別される特徴が、専門用語、序論、IoTプラットフォーム及びストリーム−バッチ処理フレームワーク、ステートマシン、データカラムナ、フローチャート、マルチテナント統合、幾つかの特定の実施例等といった、実施例として識別される基本の特徴のセットと如何に容易に組み合わせられるかを理解するであろう。
一実施例では、本方法は、1回だけの期間中に、第2の入力されたイベントを無視することで、第2の入力されたイベントに対しては何れのワークフロー動作も起動しないことを含む。
別の実施例では、データエントリカラムナへの宣言的入力は更に、全ての状態に適用されるグローバルな状態遷移に応じた少なくとも1つの常時動作の仕様を含む。
更に別の実施例では、データエントリカラムナへの宣言的入力は更に、エンティティの複数の状態の仕様を含む。
幾つかの実施例では、エンティティが電子機器の場合、当該電気機器の状態には、オン、オフ、スタンバイ、電源投入、電源切断、全電力のパーセンテージ、ネットワーク接続の範囲の内、少なくとも1つが更に含まれる。
幾つかの実施例では、宣言的入力は、メッセージバス及びストリーム処理システムを備える準リアルタイム(NRT)イベント管理フレームワークから受領される。一実施例では、宣言的入力には、ユーザクリックデータ、ユーザ購買行動、装置データ、ソーシャルメディアストリームの内、少なくとも1つが含まれる。別の実施例では、メッセージバスは、Kafka、Flume、ActiveMQ、RabbitMQの内、少なくとも1つである。更に別の実施例では、ストリーム処理システムは、StormとSparkの内、少なくとも1つである。
一実施例では、非プログラミングユーザ向けの、エンティティ管理ワークフローの作成を単純化する方法を説明する。本方法は、人間−機械の相互作用に依存せずに機械によって生成された機械生成イベントを処理するワークフローステートマシンにおいて、複数のケース−ステータス状態を表示する工程を備える。本方法は更に、複数のケース−ステータス状態における少なくとも第1のケース−ステータス状態の間に、入力された第2イベントを無視するか、又は、処理するかを決定するために、イベントフィルタリング条件をメモリに記録する工程を備える。イベントフィルタリング条件は、第1イベントで開始され、第1イベントと合致する特徴を持った第2イベントが無視又は放棄される1回だけの期間を指定する時間パラメータを含む。本方法は更に、入力された機械生成イベントを処理する命令をワークフローエンジンにロードする工程と、少なくともケース−ステータス状態及びイベントフィルタリング条件に応じて選択された命令を実行する工程を備える。
幾つかの実施例では、宣言的入力は、メッセージバス及びストリーム処理システムを備える準リアルタイム(NRT)イベント管理フレームワークから受領される。一実施例では、宣言的入力には、ユーザクリックデータ、ユーザ購買行動、装置データ、ソーシャルメディアストリームの内、少なくとも1つが含まれる。一実施例では、本方法は更に、状態遷移中に条件を、当該条件が参照するデータベースフィールドの少なくとも1つの値に対して、評価する工程を備える。
一実施例では、データエントリカラムナへの入力を示すデータは更に、状態遷移に応答した動作の実行に続いて得られる少なくとも1つの状態の仕様を含む。
別実施例では、データエントリカラムナへの入力を示すデータは更に、全ての状態に適用されるグローバルな状態遷移に応じた少なくとも1つの常時動作の仕様を含む。
更に別の実施例では、データエントリカラムナへの入力を示すデータは更に、エンティティの複数の状態の仕様を含む。
開示された一実施例では、非プログラミングユーザ向けの、エンティティ管理ワークフローの作成を単純化する方法は、エンティティとの相互作用を自動的に多段階で進行させるステートマシンを指定する宣言的入力を受け付けるデータエントリカラムナのGUIを、表示のために、生成する工程を備え、データエントリカラムナは、多段階進行における状態に関する少なくとも1つのカラムと、状態遷移を引き起こすタイムベース遷移トリガー及びイベントベース遷移トリガー(状態遷移を引き起こす条件の定義を含む)と、第1イベントで始まる期間であってその間は第1イベントと合致する特徴を持つ入力された第2イベントが無視又は放棄される1回だけの期間を指定する時間パラメータを含むスロットル表現を含む。開示された本方法はまた、一定の期間が経過すると状態遷移を引き起こすタイマーと、状態遷移を引き起こし、スロットル表現を定義するイベントによって、択一的に指定される状態遷移トリガーを定義するデータエントリカラムナへの宣言的入力を受領する工程と、タイムベース遷移トリガーとイベントベース遷移トリガーの内、少なくとも1つによって生じる状態遷移に応答して実行される選択された択一的な動作を指定するデータエントリカラムナへの宣言的入力を受領する工程を備える。本方法は更に、宣言的入力又は当該宣言的入力から構築されるワークフローを保存する工程を備える。
幾つかの実施例では、エンティティが電気機器の場合、当該電気機器の状態には、少なくとも、オン、オフ、スタンバイ、電源投入、電源切断、全電力のパーセンテージ、ネットワーク接続の範囲の内、少なくとも1つが更に含まれる。
幾つかの実施例では、宣言的入力が、メッセージバス及びストリーム処理システムを備える準リアルタイム(NRT)イベント管理フレームワークから受領される。一実施例では、宣言的入力には、ユーザクリックデータ、ユーザ購買行動、装置データ、ソーシャルメディアストリームの内、少なくとも1つが含まれる。別の実施例では、メッセージバスは、Kafka、Flume、ActiveMQ、RabbitMQの内、少なくとも1つである。更に別の実施例では、ストリーム処理システムは、StormとSparkの内、少なくとも1つである。
本章に記載の方法の他の実施例は、上述した本方法の何れかを実行するために、プロセッサによって実行可能なコンピュータプログラム命令が与えられた非一時的なコンピュータ可読記憶媒体を含むことができる。本章に記載の方法の更に別の実施例は、上述した方法の何れかを実行するために、コンピュータプログラム命令がロードされたメモリ、及び、当該メモリに格納された命令を実行する動作が可能な1以上のプロセッサを備えるシステムを含むことが可能である。
ここで使用された用語及び表現は、説明のための用語及び表現として使用されており、限定するためのものではない。また、こうした用語及び表現を用いて、表示又は記載された特徴の如何なる均等物、或いは、その一部を排除する意図はない。また、開示された技術の特定の実施例が記載されているが、ここに開示された概念を取り入れる他の実施例が、開示された技術の精神及び範囲から逸脱することなく使用できることは、当業者にとって明らかである。したがって、記載された実施例は、全ての側面において、限定的ではなく、単なる説明として考えられる。

Claims (8)

  1. 第1イベントの後の装置の1状態の間に、イベントフィルタリング条件をメモリに記録する工程と、
    複数の入力された機械生成イベントについて、少なくとも前記イベントフィルタリング条件及び前記装置の前記第1状態に応じて、命令を選択する工程と、
    入力用のプロンプトを含むユーザインターフェースを提示する工程であって、前記プロンプトは、前記装置の記述、少なくとも1つの状態遷移条件、及び前記イベントフィルタリング条件を含む、工程と、
    数のカウントパラメータを初期化する工程であって、前記イベントフィルタリング条件に基づいて、前記整数のカウントパラメータを超えた、互いに合致する特徴を持った追加のイベントは無視さる、工程と、
    前記複数の入力された機械生成イベントについて、少なくとも前記イベントフィルタリング条件、前記整数のカウントパラメータ、及び前記装置の前記第1状態に応じて選択された前記命令を実行するようにワークフローエンジンを構成する工程と、
    を含む方法。
  2. 一定の期間中に、入力されたイベント無視する工程を更に含み前記無視することは、前記入力されたイベントに対してはワークフロー動作起動ないことを含む、請求項1に記載の方法。
  3. 前記複数の入力された機械生成イベント及び前記追加のイベントは、メッセージバス及びストリーム処理システムを備える準リアルタイム(NRT)イベント管理フレームワークから受領される請求項1に記載の方法。
  4. 状態遷移に応じて、前記装置が、前記装置の前記第1状態から前記装置の第2状態に遷移したと判定する工程を更に含む、請求項1に記載の方法。
  5. 前記状態遷移が前記少なくとも1つの状態遷移条件を満足していると判定すると、指定された動作を実行する工程を更に含む、請求項4に記載の方法。
  6. 前記装置の前記第1状態は、オンライン、オフライン、スタンバイ、電力投入、電力切断、ネットワーク接続の範囲の内、少なくとも1つを更に含む、請求項1に記載の方法。
  7. コンピュータプログラム命令がロードされたメモリと、請求項1〜6の何れか1項に記載の方法を実施するよう構成されている、前記メモリ内に格納された命令を実行する動作が可能な1以上のプロセッサと、を備えたシステム。
  8. 求項1〜の何れか1項に記載の方法を実施するためにプロセッサによって実行可能なコンピュータプログラム命令が与えられた非一時的コンピュータ可読記憶媒体。
JP2017021799A 2016-02-10 2017-02-09 改善されたインターフェースを備えるステートマシンビルダー及び状態非依存イベントの処理 Active JP6523354B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662293738P 2016-02-10 2016-02-10
US62/293,738 2016-02-10
US15/240,729 US10437635B2 (en) 2016-02-10 2016-08-18 Throttling events in entity lifecycle management
US15/240,729 2016-08-18

Publications (2)

Publication Number Publication Date
JP2017142798A JP2017142798A (ja) 2017-08-17
JP6523354B2 true JP6523354B2 (ja) 2019-05-29

Family

ID=59497683

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017021799A Active JP6523354B2 (ja) 2016-02-10 2017-02-09 改善されたインターフェースを備えるステートマシンビルダー及び状態非依存イベントの処理

Country Status (2)

Country Link
US (1) US10437635B2 (ja)
JP (1) JP6523354B2 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956422B2 (en) 2012-12-05 2021-03-23 Oracle International Corporation Integrating event processing with map-reduce
US9342297B2 (en) * 2013-06-07 2016-05-17 Capital One Financial Corporation Systems and methods for providing predictive quality analysis
US10324773B2 (en) * 2015-09-17 2019-06-18 Salesforce.Com, Inc. Processing events generated by internet of things (IoT)
US10756991B2 (en) 2015-09-17 2020-08-25 Salesforce.Com, Inc. Simplified entity engagement automation
US10338796B2 (en) * 2016-07-27 2019-07-02 Sap Se Event services modeling framework for computer systems
US11573965B2 (en) * 2016-09-15 2023-02-07 Oracle International Corporation Data partitioning and parallelism in a distributed event processing system
WO2018053343A1 (en) 2016-09-15 2018-03-22 Oracle International Corporation Managing snapshots and state with micro-batching
US10152306B2 (en) * 2016-11-07 2018-12-11 Palantir Technologies Inc. Framework for developing and deploying applications
US10445696B2 (en) * 2017-01-03 2019-10-15 Wipro Limited Methods and systems for orchestration of supply chain processes using internet of technology sensor's events
WO2018169429A1 (en) 2017-03-17 2018-09-20 Oracle International Corporation Framework for the deployment of event-based applications
WO2018169430A1 (en) 2017-03-17 2018-09-20 Oracle International Corporation Integrating logic in micro batch based event processing systems
US20180324061A1 (en) * 2017-05-03 2018-11-08 Extrahop Networks, Inc. Detecting network flow states for network traffic analysis
CN111052710B (zh) * 2017-09-06 2023-11-07 康维达无线有限责任公司 用于物联网可配置事件和动作排序框架的装置和方法
US11150630B2 (en) * 2017-10-19 2021-10-19 International Business Machines Corporation Predictive maintenance utilizing supervised sequence rule mining
US10956358B2 (en) 2017-11-21 2021-03-23 Microsoft Technology Licensing, Llc Composite pipeline framework to combine multiple processors
US11347703B1 (en) 2017-12-08 2022-05-31 Palantir Technologies Inc. System and methods for object version tracking and read-time/write-time data federation
US11392877B2 (en) 2018-01-03 2022-07-19 SlackTechnologies, LLC Method, apparatus, and computer program product for low latency serving of interactive enterprise analytics within an enterprise group-based communication system
US10402397B1 (en) * 2018-05-09 2019-09-03 Palantir Technologies Inc. Systems and methods for accessing federated data
US10701003B2 (en) 2018-05-21 2020-06-30 Slack Technologies, Inc. Systems and methods for initiating external actions via a group-based communication system
CN108898281B (zh) * 2018-06-05 2021-06-18 中节能(苏州)环保科技产业园有限公司 基于大数据的产业园环保服务平台
US10649822B2 (en) 2018-06-29 2020-05-12 Hewlett Packard Enterprise Development Lp Event ingestion management
US10805386B2 (en) 2018-07-25 2020-10-13 Slack Technologies, Inc. Reducing transmissions by suggesting digital content for display in a group-based communication interface
CN112534407A (zh) * 2018-08-14 2021-03-19 瑞典爱立信有限公司 用于机器对机器装置管理任务的有效执行和监测的系统和方法
US11153215B1 (en) * 2018-11-19 2021-10-19 Cvs Pharmacy, Inc. Asynchronous high throughput inbound messages with throttled outbound messages to safeguard enterprise backend systems
JP7211052B2 (ja) 2018-12-06 2023-01-24 富士通株式会社 ストリーム処理パイプラインの自動生成方法、データストリーム処理プログラムおよびデータストリーム処理システム
US11182742B2 (en) 2019-04-05 2021-11-23 Nike, Inc. Radio frequency identification scanning using the internet of things
CN110389946B (zh) * 2019-07-18 2023-01-24 福建威盾科技集团有限公司 一种针对wifi探针采集的海量数据的去重方法及系统
US11429669B2 (en) 2019-08-06 2022-08-30 Twitter, Inc. Managing query subscription renewals in a messaging platform
US12099820B2 (en) 2019-10-15 2024-09-24 UiPath, Inc. Training and using artificial intelligence (AI) / machine learning (ML) models to automatically supplement and/or complete code of robotic process automation workflows
US11165823B2 (en) 2019-12-17 2021-11-02 Extrahop Networks, Inc. Automated preemptive polymorphic deception
US11200150B2 (en) 2020-01-13 2021-12-14 EMC IP Holding Company LLC Multi-tenanted build system with visualization of dynamic build progress
US11082486B1 (en) 2020-01-31 2021-08-03 Slack Technologies, Inc. Group-based communication apparatus configured to implement operational sequence sets and render workflow interface objects within a group-based communication system
US11631031B2 (en) 2020-02-20 2023-04-18 Bank Of America Corporation Automated model generation platform for recursive model building
JP7241713B2 (ja) * 2020-03-24 2023-03-17 株式会社日立製作所 オペレータ管理装置、オペレータ管理方法及びオペレータ管理コンピュータープログラム
US10897413B1 (en) * 2020-03-31 2021-01-19 Vmware, Inc. Determining operational status of internet of things devices
US11693696B2 (en) * 2020-09-11 2023-07-04 EMC IP Holding Company LLC Techniques for command execution using a state machine
CN112784199A (zh) * 2021-01-28 2021-05-11 北京有竹居网络技术有限公司 事件流程处理方法、设备、存储介质及程序产品
US20220308737A1 (en) * 2021-03-23 2022-09-29 Rockwell Automation Technologies, Inc. Defining an action on an external application based on a machine learning model prediction from within a data pipeline
US20230067168A1 (en) * 2021-08-24 2023-03-02 Rakuten Mobile, Inc. Network service construction graphical user interface, apparatus and method
CN113709229A (zh) * 2021-08-24 2021-11-26 德清阿尔法创新研究院 一种数据驱动的智能物联网平台工作流实现系统及方法
US11950318B2 (en) 2021-12-14 2024-04-02 Aeris Communications, Inc. Intelligent mechanism to identify and manage cost of IoT device lifecycle
US20230196248A1 (en) * 2021-12-22 2023-06-22 Fidelity Information Services, Llc Systems and methods for improving quality of artificial intelligence model
US11716290B1 (en) * 2022-05-12 2023-08-01 Bank Of America Corporation Electronic system for dynamic linking of resource data structures across distributed networks
US11917035B1 (en) * 2022-12-15 2024-02-27 Amazon Technologies, Inc. Egress rate control in an event bus service

Family Cites Families (211)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485600A (en) 1992-11-09 1996-01-16 Virtual Prototypes, Inc. Computer modelling system and method for specifying the behavior of graphical operator interfaces
US5608872A (en) 1993-03-19 1997-03-04 Ncr Corporation System for allowing all remote computers to perform annotation on an image and replicating the annotated image on the respective displays of other comuters
US5649104A (en) 1993-03-19 1997-07-15 Ncr Corporation System for allowing user of any computer to draw image over that generated by the host computer and replicating the drawn image to other computers
US7991347B1 (en) 1994-04-07 2011-08-02 Data Innovation Llc System and method for accessing set of digital data at a remote site
US5577188A (en) 1994-05-31 1996-11-19 Future Labs, Inc. Method to provide for virtual screen overlay
US7181758B1 (en) 1994-07-25 2007-02-20 Data Innovation, L.L.C. Information distribution and processing system
GB2300991B (en) 1995-05-15 1997-11-05 Andrew Macgregor Ritchie Serving signals to browsing clients
US5715450A (en) 1995-09-27 1998-02-03 Siebel Systems, Inc. Method of selecting and presenting data from a database using a query language to a user of a computer system
JPH09114623A (ja) 1995-10-13 1997-05-02 Toshiba Corp ユーザインタフェース設計ツール
US5821937A (en) 1996-02-23 1998-10-13 Netsuite Development, L.P. Computer method for updating a network design
US5831610A (en) 1996-02-23 1998-11-03 Netsuite Development L.P. Designing networks
US5873096A (en) 1997-10-08 1999-02-16 Siebel Systems, Inc. Method of maintaining a network of partially replicated database system
US6604117B2 (en) 1996-03-19 2003-08-05 Siebel Systems, Inc. Method of maintaining a network of partially replicated database system
US5860017A (en) 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
AU6440398A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of using a cache to determine the visibility to a remote database client of a plurality of database transactions
AU6183698A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of determining visibility to a remote database client of a plurality of database transactions having variable visibility strengths
JP2002511164A (ja) 1997-02-26 2002-04-09 シーベル システムズ,インコーポレイティド 単純化された可視度ルールに用いるための複数のデータベース・トランザクションのリモート・データベース・クライアントの可視度決定方法
AU6336698A (en) 1997-02-26 1998-09-29 Siebel Systems, Inc. Distributed relational database
AU6654798A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of determining visibility to a remote database client of a plurality of database transactions using a networked proxy server
JP2001514776A (ja) 1997-02-27 2001-09-11 シーベル システムズ,インコーポレイティド ローカルな修正を組み込むソフトウェア配布の連続レベル移送の方法
WO1998040805A2 (en) 1997-02-27 1998-09-17 Siebel Systems, Inc. Method of synchronizing independently distributed software and database schema
AU6669198A (en) 1997-02-28 1998-09-18 Siebel Systems, Inc. Partially replicated distributed database with multiple levels of remote clients
US6169534B1 (en) 1997-06-26 2001-01-02 Upshot.Com Graphical user interface for customer information management
US6560461B1 (en) 1997-08-04 2003-05-06 Mundi Fomukong Authorized location reporting paging system
US5918159A (en) 1997-08-04 1999-06-29 Fomukong; Mundi Location reporting satellite paging system with optional blocking of location reporting
US20020059095A1 (en) 1998-02-26 2002-05-16 Cook Rachael Linette System and method for generating, capturing, and managing customer lead information over a computer network
US6732111B2 (en) 1998-03-03 2004-05-04 Siebel Systems, Inc. Method, apparatus, system, and program product for attaching files and other objects to a partially replicated database
US6161149A (en) 1998-03-13 2000-12-12 Groupserve, Inc. Centrifugal communication and collaboration method
US6772229B1 (en) 2000-11-13 2004-08-03 Groupserve, Inc. Centrifugal communication and collaboration method
US5963953A (en) 1998-03-30 1999-10-05 Siebel Systems, Inc. Method, and system for product configuration
US6182277B1 (en) 1998-04-15 2001-01-30 Oracle Corporation Methods and apparatus for declarative programming techniques in an object oriented environment
JP2002523842A (ja) 1998-08-27 2002-07-30 アップショット・コーポレーション ネットワークベースのセールス・フォース管理のための方法および装置
US6549908B1 (en) 1998-11-18 2003-04-15 Siebel Systems, Inc. Methods and apparatus for interpreting user selections in the context of a relation distributed as a set of orthogonalized sub-relations
US6728960B1 (en) 1998-11-18 2004-04-27 Siebel Systems, Inc. Techniques for managing multiple threads in a browser environment
US6601087B1 (en) 1998-11-18 2003-07-29 Webex Communications, Inc. Instant document sharing
AU2707200A (en) 1998-11-30 2000-06-19 Siebel Systems, Inc. Assignment manager
JP2002531890A (ja) 1998-11-30 2002-09-24 シーベル システムズ,インコーポレイティド クライアントサーバーアプリケーションにおける開発ツール、方法及びシステム
WO2000033226A1 (en) 1998-11-30 2000-06-08 Siebel Systems, Inc. Smart scripting call centers
JP2002531899A (ja) 1998-11-30 2002-09-24 シーベル システムズ,インコーポレイティド プロセス監視用の状態モデル
US7356482B2 (en) 1998-12-18 2008-04-08 Alternative Systems, Inc. Integrated change management unit
US20020072951A1 (en) 1999-03-03 2002-06-13 Michael Lee Marketing support database management method, system and program product
US6574635B2 (en) 1999-03-03 2003-06-03 Siebel Systems, Inc. Application instantiation based upon attributes and values stored in a meta data repository, including tiering of application layers objects and components
US8095413B1 (en) 1999-05-07 2012-01-10 VirtualAgility, Inc. Processing management information
US7698160B2 (en) 1999-05-07 2010-04-13 Virtualagility, Inc System for performing collaborative tasks
US6621834B1 (en) 1999-11-05 2003-09-16 Raindance Communications, Inc. System and method for voice transmission over network protocols
US6535909B1 (en) 1999-11-18 2003-03-18 Contigo Software, Inc. System and method for record and playback of collaborative Web browsing session
US6324568B1 (en) 1999-11-30 2001-11-27 Siebel Systems, Inc. Method and system for distributing objects over a network
US6654032B1 (en) 1999-12-23 2003-11-25 Webex Communications, Inc. Instant sharing of documents on a remote server
US6336137B1 (en) 2000-03-31 2002-01-01 Siebel Systems, Inc. Web client-server system and method for incompatible page markup and presentation languages
US6577726B1 (en) 2000-03-31 2003-06-10 Siebel Systems, Inc. Computer telephony integration hotelling method and system
US6732100B1 (en) 2000-03-31 2004-05-04 Siebel Systems, Inc. Database access method and system for user role defined access
US7266502B2 (en) 2000-03-31 2007-09-04 Siebel Systems, Inc. Feature centric release manager method and system
US6665655B1 (en) 2000-04-14 2003-12-16 Rightnow Technologies, Inc. Implicit rating of retrieved information in an information search system
US7730072B2 (en) 2000-04-14 2010-06-01 Rightnow Technologies, Inc. Automated adaptive classification system for knowledge networks
US6842748B1 (en) 2000-04-14 2005-01-11 Rightnow Technologies, Inc. Usage based strength between related information in an information retrieval system
US6434550B1 (en) 2000-04-14 2002-08-13 Rightnow Technologies, Inc. Temporal updates of relevancy rating of retrieved information in an information search system
US6763501B1 (en) 2000-06-09 2004-07-13 Webex Communications, Inc. Remote document serving
US7069231B1 (en) 2000-07-20 2006-06-27 Oracle International Corporation Methods and systems for defining, applying and executing customer care relationship plans
KR100365357B1 (ko) 2000-10-11 2002-12-18 엘지전자 주식회사 무선통신 단말기의 데이터 통신 방법
US7581230B2 (en) 2001-02-06 2009-08-25 Siebel Systems, Inc. Adaptive communication application programming interface
USD454139S1 (en) 2001-02-20 2002-03-05 Rightnow Technologies Display screen for a computer
US7310687B2 (en) 2001-03-23 2007-12-18 Cisco Technology, Inc. Methods and systems for managing class-based condensation
US7174514B2 (en) 2001-03-28 2007-02-06 Siebel Systems, Inc. Engine to present a user interface based on a logical structure, such as one for a customer relationship management system, across a web site
US6829655B1 (en) 2001-03-28 2004-12-07 Siebel Systems, Inc. Method and system for server synchronization with a computing device via a companion device
US7363388B2 (en) 2001-03-28 2008-04-22 Siebel Systems, Inc. Method and system for direct server synchronization with a computing device
US20030206192A1 (en) 2001-03-31 2003-11-06 Mingte Chen Asynchronous message push to web browser
US20030018705A1 (en) 2001-03-31 2003-01-23 Mingte Chen Media-independent communication server
US6732095B1 (en) 2001-04-13 2004-05-04 Siebel Systems, Inc. Method and apparatus for mapping between XML and relational representations
US7761288B2 (en) 2001-04-30 2010-07-20 Siebel Systems, Inc. Polylingual simultaneous shipping of software
US6728702B1 (en) 2001-06-18 2004-04-27 Siebel Systems, Inc. System and method to implement an integrated search center supporting a full-text search and query on a database
US6711565B1 (en) 2001-06-18 2004-03-23 Siebel Systems, Inc. Method, apparatus, and system for previewing search results
US6782383B2 (en) 2001-06-18 2004-08-24 Siebel Systems, Inc. System and method to implement a persistent and dismissible search center frame
US6763351B1 (en) 2001-06-18 2004-07-13 Siebel Systems, Inc. Method, apparatus, and system for attaching search results
US20030004971A1 (en) 2001-06-29 2003-01-02 Gong Wen G. Automatic generation of data models and accompanying user interfaces
US7851004B2 (en) 2001-07-19 2010-12-14 San-Ei Gen F.F.I., Inc. Taste-improving composition and application of the same
US6978445B2 (en) 2001-09-28 2005-12-20 Siebel Systems, Inc. Method and system for supporting user navigation in a browser environment
US6724399B1 (en) 2001-09-28 2004-04-20 Siebel Systems, Inc. Methods and apparatus for enabling keyboard accelerators in applications implemented via a browser
US6993712B2 (en) 2001-09-28 2006-01-31 Siebel Systems, Inc. System and method for facilitating user interaction in a browser environment
US7761535B2 (en) 2001-09-28 2010-07-20 Siebel Systems, Inc. Method and system for server synchronization with a computing device
US6826582B1 (en) 2001-09-28 2004-11-30 Emc Corporation Method and system for using file systems for content management
US8359335B2 (en) 2001-09-29 2013-01-22 Siebel Systems, Inc. Computing system and method to implicitly commit unsaved data for a world wide web application
US7962565B2 (en) 2001-09-29 2011-06-14 Siebel Systems, Inc. Method, apparatus and system for a mobile web client
US7146617B2 (en) 2001-09-29 2006-12-05 Siebel Systems, Inc. Method, apparatus, and system for implementing view caching in a framework to support web-based applications
US6901595B2 (en) 2001-09-29 2005-05-31 Siebel Systems, Inc. Method, apparatus, and system for implementing a framework to support a web-based application
US7289949B2 (en) 2001-10-09 2007-10-30 Right Now Technologies, Inc. Method for routing electronic correspondence based on the level and type of emotion contained therein
US7062502B1 (en) 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
US6804330B1 (en) 2002-01-04 2004-10-12 Siebel Systems, Inc. Method and system for accessing CRM data via voice
US6993706B2 (en) 2002-01-15 2006-01-31 International Business Machines Corporation Method, apparatus, and program for a state machine framework
US20030149717A1 (en) 2002-02-05 2003-08-07 William Heinzman Batch processing job streams using and/or precedence logic
US7058890B2 (en) 2002-02-13 2006-06-06 Siebel Systems, Inc. Method and system for enabling connectivity to a data system
US7131071B2 (en) 2002-03-29 2006-10-31 Siebel Systems, Inc. Defining an approval process for requests for approval
US7672853B2 (en) 2002-03-29 2010-03-02 Siebel Systems, Inc. User interface for processing requests for approval
US6850949B2 (en) 2002-06-03 2005-02-01 Right Now Technologies, Inc. System and method for generating a dynamic interface via a communications network
US7437720B2 (en) 2002-06-27 2008-10-14 Siebel Systems, Inc. Efficient high-interactivity user interface for client-server applications
US7594181B2 (en) 2002-06-27 2009-09-22 Siebel Systems, Inc. Prototyping graphical user interfaces
US8639542B2 (en) 2002-06-27 2014-01-28 Siebel Systems, Inc. Method and apparatus to facilitate development of a customer-specific business process model
US20040010489A1 (en) 2002-07-12 2004-01-15 Rightnow Technologies, Inc. Method for providing search-specific web pages in a network computing environment
WO2004017199A1 (en) * 2002-08-14 2004-02-26 Ingemar Bystedt Method for monitoring and managing an information system
US7251787B2 (en) 2002-08-28 2007-07-31 Siebel Systems, Inc. Method and apparatus for an integrated process modeller
US7069497B1 (en) 2002-09-10 2006-06-27 Oracle International Corp. System and method for applying a partial page change
US9448860B2 (en) 2003-03-21 2016-09-20 Oracle America, Inc. Method and architecture for providing data-change alerts to external applications via a push service
WO2004086197A2 (en) 2003-03-24 2004-10-07 Siebel Systems, Inc. Custom common object
US7904340B2 (en) 2003-03-24 2011-03-08 Siebel Systems, Inc. Methods and computer-readable medium for defining a product model
JP2006523353A (ja) 2003-03-24 2006-10-12 シーベル システムズ,インコーポレイティド 共通共通オブジェクト
US8762415B2 (en) 2003-03-25 2014-06-24 Siebel Systems, Inc. Modeling of order data
US7685515B2 (en) 2003-04-04 2010-03-23 Netsuite, Inc. Facilitating data manipulation in a browser-based user interface of an enterprise business application
GB0308264D0 (en) 2003-04-10 2003-05-14 Ibm Recovery from failures within data processing systems
US7263553B2 (en) 2003-04-11 2007-08-28 Alcatel Network manager SNMP trap suppression
US7047337B2 (en) 2003-04-24 2006-05-16 International Business Machines Corporation Concurrent access of shared resources utilizing tracking of request reception and completion order
US7412455B2 (en) 2003-04-30 2008-08-12 Dillon David M Software framework that facilitates design and implementation of database applications
US7620655B2 (en) 2003-05-07 2009-11-17 Enecto Ab Method, device and computer program product for identifying visitors of websites
US7409336B2 (en) 2003-06-19 2008-08-05 Siebel Systems, Inc. Method and system for searching data based on identified subset of categories and relevance-scored text representation-category combinations
US20040260659A1 (en) 2003-06-23 2004-12-23 Len Chan Function space reservation system
US7237227B2 (en) 2003-06-30 2007-06-26 Siebel Systems, Inc. Application user interface template with free-form layout
US7694314B2 (en) 2003-08-28 2010-04-06 Siebel Systems, Inc. Universal application network architecture
US7421546B2 (en) * 2004-02-12 2008-09-02 Relaystar Sa/Nv Intelligent state engine system
US8607322B2 (en) 2004-07-21 2013-12-10 International Business Machines Corporation Method and system for federated provisioning
US7289976B2 (en) 2004-12-23 2007-10-30 Microsoft Corporation Easy-to-use data report specification
US9256740B2 (en) * 2005-02-22 2016-02-09 International Business Machines Corporation Method and system for analysis of security events in a managed computer network
US7464293B2 (en) 2006-03-10 2008-12-09 Yahoo! Inc. System and method for automated recovery after an error in a batch processing system caused by malformatted or unsupported data
US8566301B2 (en) 2006-05-01 2013-10-22 Steven L. Rueben Document revisions in a collaborative computing environment
US8209308B2 (en) 2006-05-01 2012-06-26 Rueben Steven L Method for presentation of revisions of an electronic document
US9135228B2 (en) 2006-05-01 2015-09-15 Domo, Inc. Presentation of document history in a web browsing application
US7779475B2 (en) 2006-07-31 2010-08-17 Petnote Llc Software-based method for gaining privacy by affecting the screen of a computing device
US8082301B2 (en) 2006-11-10 2011-12-20 Virtual Agility, Inc. System for supporting collaborative activity
US8954500B2 (en) 2008-01-04 2015-02-10 Yahoo! Inc. Identifying and employing social network relationships
US8073850B1 (en) 2007-01-19 2011-12-06 Wordnetworks, Inc. Selecting key phrases for serving contextually relevant content
US7617074B2 (en) 2007-07-06 2009-11-10 Microsoft Corporation Suppressing repeated events and storing diagnostic information
US8589943B2 (en) 2007-08-15 2013-11-19 Sony Computer Entertainment Inc. Multi-threaded processing with reduced context switching
US8719287B2 (en) 2007-08-31 2014-05-06 Business Objects Software Limited Apparatus and method for dynamically selecting componentized executable instructions at run time
US8260934B2 (en) 2007-08-31 2012-09-04 Red Hat, Inc. Multiplex transport
US9619143B2 (en) 2008-01-06 2017-04-11 Apple Inc. Device, method, and graphical user interface for viewing application launch icons
US8352966B2 (en) 2007-09-11 2013-01-08 Yahoo! Inc. System and method of inter-widget communication
US20090100342A1 (en) 2007-10-12 2009-04-16 Gabriel Jakobson Method and system for presenting address and mapping information
US8417809B1 (en) 2007-12-25 2013-04-09 Netapp, Inc. Event supression method and system
US8069190B2 (en) 2007-12-27 2011-11-29 Cloudscale, Inc. System and methodology for parallel stream processing
US8132182B2 (en) 2007-12-28 2012-03-06 International Business Machines Corporation Parallel processing of triggering rules in SIP event notification filters
US8504945B2 (en) 2008-02-01 2013-08-06 Gabriel Jakobson Method and system for associating content with map zoom function
US8490025B2 (en) 2008-02-01 2013-07-16 Gabriel Jakobson Displaying content associated with electronic mapping systems
US10002034B2 (en) 2008-02-25 2018-06-19 Georgetown University System and method for detecting, collecting, analyzing, and communicating event-related information
US8014943B2 (en) 2008-05-08 2011-09-06 Gabriel Jakobson Method and system for displaying social networking navigation information
US8032297B2 (en) 2008-05-08 2011-10-04 Gabriel Jakobson Method and system for displaying navigation information on an electronic map
US8646103B2 (en) 2008-06-30 2014-02-04 Gabriel Jakobson Method and system for securing online identities
US8510664B2 (en) 2008-09-06 2013-08-13 Steven L. Rueben Method and system for displaying email thread information
US20100077403A1 (en) 2008-09-23 2010-03-25 Chaowei Yang Middleware for Fine-Grained Near Real-Time Applications
US8661056B1 (en) 2008-11-03 2014-02-25 Salesforce.Com, Inc. System, method and computer program product for publicly providing web content of a tenant using a multi-tenant on-demand database service
JP2010141821A (ja) 2008-12-15 2010-06-24 Toshiba Corp ストリーミングプロセッサおよびプロセッサシステム
JP5149840B2 (ja) 2009-03-03 2013-02-20 株式会社日立製作所 ストリームデータ処理方法、ストリームデータ処理プログラム、および、ストリームデータ処理装置
US8601458B2 (en) 2009-05-14 2013-12-03 International Business Machines Corporation Profile-driven data stream processing
US8397238B2 (en) 2009-12-08 2013-03-12 Qualcomm Incorporated Thread allocation and clock cycle adjustment in an interleaved multi-threaded processor
US8510045B2 (en) 2009-12-22 2013-08-13 Steven L. Rueben Digital maps displaying search-resulting points-of-interest in user delimited regions
US8583587B2 (en) 2010-03-08 2013-11-12 Salesforce.Com, Inc. System, method and computer program product for performing one or more actions utilizing a uniform resource locator
US8925041B2 (en) 2010-04-01 2014-12-30 Salesforce.Com, Inc. System, method and computer program product for performing one or more actions based on a determined access permissions for a plurality of users
US8566654B2 (en) 2010-08-13 2013-10-22 Salesforce.Com, Inc. Debugging site errors by an admin as a guest user in a multi-tenant database environment
US8856374B2 (en) 2010-11-30 2014-10-07 Hstreaming, Inc. Methods and systems for reconfiguration and repartitioning of a parallel distributed stream process
US8869162B2 (en) 2011-04-26 2014-10-21 Microsoft Corporation Stream processing on heterogeneous hardware devices
US8997107B2 (en) 2011-06-28 2015-03-31 Microsoft Technology Licensing, Llc Elastic scaling for cloud-hosted batch applications
US8813085B2 (en) 2011-07-19 2014-08-19 Elwha Llc Scheduling threads based on priority utilizing entitlement vectors, weight and usage level
US9015708B2 (en) 2011-07-28 2015-04-21 International Business Machines Corporation System for improving the performance of high performance computing applications on cloud using integrated load balancing
US9892188B2 (en) 2011-11-08 2018-02-13 Microsoft Technology Licensing, Llc Category-prefixed data batching of coded media data in multiple categories
US8943002B2 (en) 2012-02-10 2015-01-27 Liveperson, Inc. Analytics driven engagement
US8769017B2 (en) 2012-02-17 2014-07-01 Zebedo Collaborative web browsing system having document object model element interaction detection
US8756275B2 (en) 2012-02-17 2014-06-17 Zebedo Variable speed collaborative web browsing system
US8769004B2 (en) 2012-02-17 2014-07-01 Zebedo Collaborative web browsing system integrated with social networks
US20130254771A1 (en) 2012-03-20 2013-09-26 Google Inc. Systems and methods for continual, self-adjusting batch processing of a data stream
US8768956B2 (en) 2012-04-25 2014-07-01 Hitachi, Ltd. Stream data processing method with multiple windows on single stream
US10181106B2 (en) 2012-05-29 2019-01-15 Ophio Software, Inc. Methods for processing information associated with sales force management, customer relationship management and professional services management systems
US10069707B2 (en) 2012-05-29 2018-09-04 Openet Telecom Ltd. System and method for seamless horizontal scaling using logical scalable units
US9514094B2 (en) 2012-07-10 2016-12-06 Maxeler Technologies Ltd Processing data sets using dedicated logic units to prevent data collision in a pipelined stream processor
CN104703964B (zh) 2012-07-20 2017-04-12 拜耳制药股份公司 取代氨基茚满‑和氨基萘满甲酸及其用途
US20140150100A1 (en) * 2012-08-15 2014-05-29 Qualcomm Incorporated Adaptive Observation of Driver and Hardware Level Behavioral Features on a Mobile Device
US9330257B2 (en) * 2012-08-15 2016-05-03 Qualcomm Incorporated Adaptive observation of behavioral features on a mobile device
SG11201501405XA (en) 2012-09-21 2015-05-28 Nyse Group Inc High performance data streaming
US9705754B2 (en) 2012-12-13 2017-07-11 Level 3 Communications, Llc Devices and methods supporting content delivery with rendezvous services
US9152467B2 (en) 2013-01-18 2015-10-06 Nec Laboratories America, Inc. Method for simultaneous scheduling of processes and offloading computation on many-core coprocessors
US9367357B2 (en) 2013-01-18 2016-06-14 Nec Corporation Simultaneous scheduling of processes and offloading computation on many-core coprocessors
WO2014116204A1 (en) 2013-01-22 2014-07-31 Hewlett-Packard Development Company, L.P. Processing data streams
US20140230062A1 (en) * 2013-02-12 2014-08-14 Cisco Technology, Inc. Detecting network intrusion and anomaly incidents
US9223674B2 (en) 2013-03-11 2015-12-29 Wisconsin Alumni Research Foundation Computer system and method for runtime control of parallelism in program execution
US9674249B1 (en) 2013-03-11 2017-06-06 DataTorrent, Inc. Distributed streaming platform for real-time applications
IN2013CH01044A (ja) 2013-03-12 2015-08-14 Yahoo Inc
US20140304545A1 (en) 2013-04-05 2014-10-09 Hewlett-Packard Development Company, L.P. Recovering a failure in a data processing system
US9471436B2 (en) 2013-04-23 2016-10-18 Facebook, Inc. Use of incremental checkpoints to restore user data stream processes
TWI484409B (zh) 2013-05-22 2015-05-11 Evermore Technology Inc 以條件觸發反應爲基礎的行動通訊裝置用應用程式之建置平台
US8949859B2 (en) 2013-06-20 2015-02-03 Alcatel Lucent Event-driven application systems and methods
US9215240B2 (en) * 2013-07-25 2015-12-15 Splunk Inc. Investigative and dynamic detection of potential security-threat indicators from events in big data
US9547530B2 (en) 2013-11-01 2017-01-17 Arm Limited Data processing apparatus and method for processing a plurality of threads
US9262192B2 (en) 2013-12-16 2016-02-16 Vmware, Inc. Virtual machine data store queue allocation
US10198490B2 (en) 2014-01-06 2019-02-05 Salesforce.Com, Inc. Systems and methods for interactively configuring multiple conditions and multiple actions in a workflow application
US9715411B2 (en) 2014-02-05 2017-07-25 International Business Machines Corporation Techniques for mapping logical threads to physical threads in a simultaneous multithreading data processing system
US9645864B2 (en) 2014-02-06 2017-05-09 Intel Corporation Technologies for operating system transitions in multiple-operating-system environments
US9195493B2 (en) 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
WO2015174113A1 (ja) * 2014-05-15 2015-11-19 ソニー株式会社 情報処理装置、システム、情報処理方法およびプログラム
US9542221B2 (en) 2014-05-22 2017-01-10 Oracle International Corporation Dynamic co-scheduling of hardware contexts for parallel runtime systems on shared machines
US9703733B2 (en) 2014-06-27 2017-07-11 Intel Corporation Instructions and logic to interrupt and resume paging in a secure enclave page cache
JP6451149B2 (ja) 2014-09-01 2019-01-16 富士通株式会社 管理装置、マイグレーション制御プログラム、情報処理システム
US9569221B1 (en) 2014-09-29 2017-02-14 Amazon Technologies, Inc. Dynamic selection of hardware processors for stream processing
US10176004B2 (en) 2014-11-18 2019-01-08 International Business Machines Corporation Workload-aware load balancing to minimize scheduled downtime during maintenance of host or hypervisor of a virtualized computing system
US9094407B1 (en) 2014-11-21 2015-07-28 Citrix Systems, Inc. Security and rights management in a machine-to-machine messaging system
US20160162582A1 (en) 2014-12-09 2016-06-09 Moodwire, Inc. Method and system for conducting an opinion search engine and a display thereof
KR101634295B1 (ko) 2014-12-16 2016-06-30 주식회사 윈스 IoT 보안을 위한 인증 서비스 제공 시스템 및 방법
US10599982B2 (en) 2015-02-23 2020-03-24 Machinesense, Llc Internet of things based determination of machine reliability and automated maintainenace, repair and operation (MRO) logs
US20160219089A1 (en) 2015-01-23 2016-07-28 Ebay Inc. Systems and methods for messaging and processing high volume data over networks
US20160269247A1 (en) 2015-03-13 2016-09-15 Nec Laboratories America, Inc. Accelerating stream processing by dynamic network aware topology re-optimization
US9712554B2 (en) * 2015-04-09 2017-07-18 Accenture Global Services Limited Event correlation across heterogeneous operations
US10061816B2 (en) 2015-05-11 2018-08-28 Informatica Llc Metric recommendations in an event log analytics environment
US10324773B2 (en) 2015-09-17 2019-06-18 Salesforce.Com, Inc. Processing events generated by internet of things (IoT)
US10715599B2 (en) 2015-11-30 2020-07-14 Verizon Patent And Licensing, Inc. Internet of things (IoT) platform and application framework
US10057264B1 (en) 2015-12-16 2018-08-21 EMC IP Holding Company LLC Analytics-based internet of things security platform
US9917903B2 (en) 2015-12-28 2018-03-13 Verizon Patent And Licensing Inc. Internet of things provisioning
US10025656B2 (en) 2016-03-30 2018-07-17 Wipro Limited Method and system for facilitating operation of an electronic device

Also Published As

Publication number Publication date
JP2017142798A (ja) 2017-08-17
US20170228253A1 (en) 2017-08-10
US10437635B2 (en) 2019-10-08

Similar Documents

Publication Publication Date Title
JP6523354B2 (ja) 改善されたインターフェースを備えるステートマシンビルダー及び状態非依存イベントの処理
US10592282B2 (en) Providing strong ordering in multi-stage streaming processing
US20200366581A1 (en) Simplified entity lifecycle management
US11086688B2 (en) Managing resource allocation in a stream processing framework
US10878379B2 (en) Processing events generated by internet of things (IoT)
US11288142B2 (en) Recovery strategy for a stream processing system
US9842000B2 (en) Managing processing of long tail task sequences in a stream processing framework
US9965330B2 (en) Maintaining throughput of a stream processing framework while increasing processing load
US10198298B2 (en) Handling multiple task sequences in a stream processing framework
Saqlain et al. Framework of an IoT-based industrial data management for smart manufacturing
US11216302B2 (en) Modifying task dependencies at worker nodes using precompiled libraries
US11568404B2 (en) Data monetization and exchange platform
Barika et al. Orchestrating big data analysis workflows in the cloud: research challenges, survey, and future directions
Yang et al. A system architecture for manufacturing process analysis based on big data and process mining techniques
Sahal et al. Industry 4.0 towards Forestry 4.0: Fire detection use case
Ibtisum A Comparative Study on Different Big Data Tools
Vodyaho et al. Model Based Approach to Cyber–Physical Systems Status Monitoring
US20230195673A1 (en) Pluggable data adaptor
Mehboob et al. Analysis of issues and trends in Big Data Platforms
Barbierato et al. Multi-formalism models for performance engineering
Domenjoud et al. l'Économie de la Connaissance (ANEC GIE)-Département Normalisation: Ms. Anna Pochylska, Mr.

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180529

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180725

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180725

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180824

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181029

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190326

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190425

R150 Certificate of patent or registration of utility model

Ref document number: 6523354

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250