特許第6861733号(P6861733)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ティブコ ソフトウェア インクの特許一覧

特許6861733最小限のメモリ及びディスク資源消費のカスタム構築式プロセスエンジン
<>
  • 特許6861733-最小限のメモリ及びディスク資源消費のカスタム構築式プロセスエンジン 図000002
  • 特許6861733-最小限のメモリ及びディスク資源消費のカスタム構築式プロセスエンジン 図000003
  • 特許6861733-最小限のメモリ及びディスク資源消費のカスタム構築式プロセスエンジン 図000004
  • 特許6861733-最小限のメモリ及びディスク資源消費のカスタム構築式プロセスエンジン 図000005
  • 特許6861733-最小限のメモリ及びディスク資源消費のカスタム構築式プロセスエンジン 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6861733
(24)【登録日】2021年4月1日
(45)【発行日】2021年4月21日
(54)【発明の名称】最小限のメモリ及びディスク資源消費のカスタム構築式プロセスエンジン
(51)【国際特許分類】
   G06F 8/41 20180101AFI20210412BHJP
   G06F 8/36 20180101ALI20210412BHJP
【FI】
   G06F8/41 130
   G06F8/41 170
   G06F8/36
【請求項の数】17
【全頁数】16
(21)【出願番号】特願2018-557079(P2018-557079)
(86)(22)【出願日】2017年3月21日
(65)【公表番号】特表2019-518274(P2019-518274A)
(43)【公表日】2019年6月27日
(86)【国際出願番号】US2017023423
(87)【国際公開番号】WO2017196448
(87)【国際公開日】20171116
【審査請求日】2019年8月1日
(31)【優先権主張番号】15/274,120
(32)【優先日】2016年9月23日
(33)【優先権主張国】US
(31)【優先権主張番号】62/336,475
(32)【優先日】2016年5月13日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】508011614
【氏名又は名称】ティブコ ソフトウェア インク
(74)【代理人】
【識別番号】100104411
【弁理士】
【氏名又は名称】矢口 太郎
(72)【発明者】
【氏名】マルティネズ、フランシスコ
(72)【発明者】
【氏名】コズィカッソディ、ラジーブ
【審査官】 多賀 実
(56)【参考文献】
【文献】 特開2010−009489(JP,A)
【文献】 特開2006−285582(JP,A)
【文献】 特開2006−107440(JP,A)
【文献】 特開平09−204300(JP,A)
【文献】 特開平08−314699(JP,A)
【文献】 米国特許出願公開第2004/0010734(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00−8/77
G06F 9/44−9/455
G06Q 10/06
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実行される方法であって、
コンピュータが、プロセスアプリケーションに関連するトリガーの選択をユーザインターフェースを介して受け取る工程と、
コンピュータが、前記選択されたトリガーに基づいて前記プロセスアプリケーションに関連する1若しくはそれ以上のアクティビティの選択をユーザインターフェースを介して受け取る工程と、
コンピュータが、前記プロセスアプリケーションを実行するのに必要な最小限のプロセス・エンジン・コンポーネントのセットを決定する工程であって、この工程は、
コンピュータが、前記選択されたトリガー及び前記選択された1若しくはそれ以上のアクティビティに関連するプロセスフローを解析することで、前記選択されたトリガー及び前記選択された1若しくはそれ以上のアクティビティのそれぞれに関連するプロセス・エンジン・コンポーネントを特定する工程と、
コンピュータが、前記解析に基づいて、前記特定されたプロセス・エンジン・コンポーネントのうちの少なくとも1つのプロセス・エンジン・コンポーネントが前記プロセスアプリケーションの動作中に当該プロセスアプリケーションによって起動されないことを判定する工程であって、当該少なくとも1つのプロセス・エンジン・コンポーネントは前記選択された1若しくはそれ以上のアクティビティのうちの少なくとも1つのアクティビティに関連するものであり、当該少なくとも1つのアクティビティの入力は前記少なくとも1つのアクティビティに先行する前記選択されたトリガー及び前記選択された1若しくはそれ以上のアクティビティのいずれの出力でもないものである、前記判定する工程と、
コンピュータが、前記少なくとも1つのプロセス・エンジン・コンポーネントを前記特定されたプロセス・エンジン・コンポーネントから除去して、前記最小限のプロセス・エンジン・コンポーネントのセットを形成する工程と
を含むものである、前記決定する工程と、
コンピュータが、前記プロセスアプリケーションをコンパイルして、前記決定された最小限のプロセス・エンジン・コンポーネントのセットを含む実行可能コードを生成する工程と
を有する方法。
【請求項2】
請求項1に記載の方法において、さらに、コンピュータが、前記実行可能コードをデバイスに展開する工程を有する、方法。
【請求項3】
請求項1に記載の方法において、さらに、コンピュータが、前記プロセスアプリケーションを定義するアクティビティ及びトリガーのセットを受け取る工程を有する、方法。
【請求項4】
請求項3に記載の方法において、前記アクティビティ及びトリガーのセットのうちの少なくとも1つのアクティビティ及びトリガーはローカルデータベースに保存されているものである、方法。
【請求項5】
請求項3に記載の方法において、前記アクティビティ及びトリガーのセットのうちの少なくとも1つのアクティビティ及びトリガーはリモートデータベースに保存されているものである、方法。
【請求項6】
請求項1に記載の方法において、さらに、
コンピュータが、前記選択されたトリガーに基づいて利用可能なアクティビティのセットをフィルター処理する工程と、
コンピュータが、前記フィルター処理された利用可能なアクティビティのセットを選択可能な選択肢として提供する工程と
を有するものである、方法
【請求項7】
請求項1に記載の方法において、さらに、
コンピュータが、前記選択された1若しくはそれ以上のアクティビティに基づいて利用可能なアクティビティのセットをフィルター処理する工程と、
コンピュータが、前記フィルター処理された利用可能なアクティビティのセットを選択可能な選択肢として提供する工程と
を有するものである、方法
【請求項8】
請求項1に記載の方法において、プロセスアプリケーションを実行するのに必要な最小限のプロセス・エンジン・コンポーネントのセットを決定する工程は、さらに、
コンピュータが、前記選択された1若しくはそれ以上のアクティビティのそれぞれ及び前記選択されたトリガーに関連するプロセスフローを解析してアクティビティの1若しくはそれ以上の分岐を特定する工程と、
コンピュータが、前記解析に基づいて、アクティビティの前記1若しくはそれ以上の分岐のうち動作中に前記プロセスアプリケーションによって起動されない分岐がある場合に、どの分岐が動作中に前記プロセスアプリケーションによって起動されないものであるのかを決定する工程と、
コンピュータが、前記プロセスアプリケーションによって起動されない分岐に関連する使用されない1若しくはそれ以上のプロセス・エンジン・コンポーネントを前記最小限のプロセス・エンジン・コンポーネントのセットから除外する工程と
を有するものである
、方法
【請求項9】
請求項1に記載の方法において、プロセスアプリケーションを実行するのに必要な最小限のプロセス・エンジン・コンポーネントのセットを決定する工程は、さらに、
コンピュータが、前記選択された1若しくはそれ以上のアクティビティのそれぞれ及び前記選択されたトリガーに関連するプロセスフローを解析して1若しくはそれ以上のライブラリを特定する工程と、
コンピュータが、前記解析に基づいて、前記特定された1若しくはそれ以上のライブラリのうち前記プロセスアプリケーションにおいて動作中に起動されないライブラリ若しくは部分がある場合、前記特定された1若しくはそれ以上のライブラリのうちどのライブラリが若しくはそのうちどの部分が前記プロセスアプリケーションにおいて動作中に起動されないものであるかを決定する工程と、
コンピュータが、使用されないライブラリ又はその部分を前記決定された最小限のプロセス・エンジン・コンポーネントのセットから除外する工程と
を有するものである、方法。
【請求項10】
請求項1に記載の方法において、前記決定された最小限のプロセス・エンジン・コンポーネントのセットの少なくとも一部に基づいて前記プロセスアプリケーションをコンパイルして実行可能コードを生成する工程は、さらに、コンピュータが、前記実行可能コードに、前記決定された最小限のプロセス・エンジン・コンポーネントのセットに関連する1若しくはそれ以上のバインディングを含める工程を有するものである、方法。
【請求項11】
コンピュータベースのシステムであって、
コンピュータが、プロセスアプリケーションに関連するトリガーの選択と、前記選択されたトリガーに基づいて前記プロセスアプリケーションに関連する1若しくはそれ以上のアクティビティの選択とをユーザインターフェースを介して受け取る受取部と、
コンピュータが、前記プロセスアプリケーションを実行するのに必要な最小限のプロセス・エンジン・コンポーネントのセットを決定するプロセスエンジンコンポーネントセット決定部であって、このプロセスエンジンコンポーネントセット決定部は、
コンピュータが、前記選択されたトリガー及び前記選択された1若しくはそれ以上のアクティビティに関連するプロセスフローを解析することで、前記選択されたトリガー及び前記選択された1若しくはそれ以上のアクティビティのそれぞれに関連するプロセス・エンジン・コンポーネントを特定する特定部と、
コンピュータが、前記解析に基づいて、前記特定されたプロセス・エンジン・コンポーネントのうちの少なくとも1つのプロセス・エンジン・コンポーネントが前記プロセスアプリケーションの動作中に当該プロセスアプリケーションによって起動されないことを判定する判定部であって、当該少なくとも1つのプロセス・エンジン・コンポーネントは前記選択された1若しくはそれ以上のアクティビティのうちの少なくとも1つのアクティビティに関連するものであり、当該少なくとも1つのアクティビティへの入力は前記少なくとも1つのアクティビティに先行する前記選択されたトリガー及び1若しくはそれ以上のアクティビティのいずれの出力でもないものである、前記判定部と、
コンピュータが、前記少なくとも1つのプロセス・エンジン・コンポーネントを前記特定されたプロセス・エンジン・コンポーネントから除去して、前記最小限のプロセス・エンジン・コンポーネントのセットを形成する形成部と
を含むものである、前記プロセスエンジンコンポーネントセット決定部と、
コンピュータが、前記プロセスアプリケーションをコンパイルして、前記決定された最小限のプロセス・エンジン・コンポーネントのセットを含む実行可能コードを生成する実行可能コード生成部と
を有するシステム。
【請求項12】
請求項11に記載のシステムにおいて、前記プロセスエンジンコンポーネントセット決定部は、さらに、コンピュータが、前記プロセスアプリケーションを定義するアクティビティ及びトリガーのセットを受け取るように構成されているものである、システム。
【請求項13】
請求項11に記載のシステムにおいて、前記プロセスエンジンコンポーネントセット決定部は、さらに
コンピュータが、前記選択されたトリガーに基づいて利用可能なアクティビティのセットをフィルター処理し、
コンピュータが、前記フィルター処理された利用可能なアクティビティのセットを選択可能な選択肢として提供する
ように構成されている、システム。
【請求項14】
請求項11に記載のシステムにおいて、前記プロセスエンジンコンポーネントセット決定部は、さらに
コンピュータが、前記選択されたアクティビティに基づいて利用可能なアクティビティのセットをフィルター処理し、
コンピュータが、前記フィルター処理された利用可能なアクティビティのセットを選択可能な選択肢として提供する
ように構成されている、システム。
【請求項15】
請求項11に記載のシステムにおいて、前記プロセスエンジンコンポーネントセット決定部は、さらに、
コンピュータが、前記選択された1若しくはそれ以上のアクティビティのそれぞれ及び前記選択されたトリガーに関連するプロセスフローを解析してアクティビティの1若しくはそれ以上の分岐を特定し、
コンピュータが、前記解析に基づいて、アクティビティの前記1若しくはそれ以上の分岐のうち動作中に前記プロセスアプリケーションにおいて起動されない分岐がある場合に、どの分岐が動作中に前記プロセスアプリケーションにおいて起動されないものであるのかを決定し、
コンピュータが、前記プロセスアプリケーションによって起動されない分岐に関連する使用されない1若しくはそれ以上のプロセス・エンジン・コンポーネントを前記最小限のプロセス・エンジン・コンポーネントのセットから除外する
ように構成されている、システム。
【請求項16】
請求項11に記載のシステムにおいて、前記プロセスエンジンコンポーネントセット決定部は、さらに、
コンピュータが、前記選択された1若しくはそれ以上のアクティビティのそれぞれ及び前記選択されたトリガーに関連するプロセスフローを解析して1若しくはそれ以上のライブラリを特定し、
コンピュータが、前記解析に基づいて、前記特定された1若しくはそれ以上のライブラリのうち前記プロセスアプリケーションにおいて動作中に起動されないライブラリ若しくは部分がある場合、前記特定された1若しくはそれ以上のライブラリのうちどのライブラリが若しくはそのうちどの部分が前記プロセスアプリケーションにおいて動作中に起動されないものであるかを決定し、
コンピュータが、使用されないライブラリを前記最小限のプロセス・エンジン・コンポーネントのセットから除外する
ように構成されている、システム。
【請求項17】
非一時的なコンピュータ可読媒体に記録されたコンピュータプログラム製品であって、
コンピュータが、プロセスアプリケーションに関連するトリガーの選択をユーザインターフェースを介して受け取る工程と、
コンピュータが、前記選択されたトリガーに基づいて前記プロセスアプリケーションに関連する1若しくはそれ以上のアクティビティの選択をユーザインターフェースを介して受け取る工程と、
前記プロセスアプリケーションを実行するのに必要な最小限のプロセス・エンジン・コンポーネントのセットを決定する工程であって、この工程は、
コンピュータが、前記選択されたトリガー及び前記選択された1若しくはそれ以上のアクティビティに関連するプロセスフローを解析することで、前記選択されたトリガー及び前記選択された1若しくはそれ以上のアクティビティそれぞれに関連するプロセス・エンジン・コンポーネントを特定する工程と、
コンピュータが、前記解析に基づいて、前記特定されたプロセス・エンジン・コンポーネントのうちの少なくとも1つのプロセス・エンジン・コンポーネントが前記プロセスアプリケーションの動作中に当該プロセスアプリケーションによって起動されないことを判定する工程であって、当該少なくとも1つのプロセス・エンジン・コンポーネントは前記選択された1若しくはそれ以上のアクティビティのうちの少なくとも1つのアクティビティに関連するものであり、当該少なくとも1つのアクティビティへの入力は前記少なくとも1つのアクティビティに先行する前記選択されたトリガー及び1若しくはそれ以上のアクティビティのいずれの出力でもないものである、前記判定する工程と、
コンピュータが、前記少なくとも1つのプロセス・エンジン・コンポーネントを前記特定されたプロセス・エンジン・コンポーネントから除去して、前記最小限のプロセス・エンジン・コンポーネントのセットを形成する工程と
を含むものである、前記決定する工程と、
コンピュータが、前記プロセスアプリケーションをコンパイルして、前記決定された最小限のプロセス・エンジン・コンポーネントのセットを含む実行可能コードを生成する工程と
を実行するための命令を有する、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願)
本出願は、2016年5月13日に出願された'最小限のメモリ及びディスク資源消費のカスタム構築式プロセスエンジン'と題する米国仮特許出願第62/336,475号に基づく優先権を主張するものであり、この参照によりすべての目的でこれを本明細書に組み込むものとする。
【背景技術】
【0002】
従来のプロセスエンジンは、凡用の一体型サーバソフトウェアであり、当該サーバソフトウェアにはアプリケーション開発者によって設計された特別仕様のプロセスアプリケーションがロードされる。プロセスエンジンには、任意のアプリケーション開発者に必要とされる機能一式が含まれる。従来のプロセスエンジンは、機能の完全性を目指して構築され、結果的にいずれかの特定のプロセスアプリケーション用メモリ及びディスクフットプリントよりも大きく最適性に劣る。故に、従来のプロセスエンジンは、資源が制約された環境、例えば組み込み型の演算及びIoT(Internet of Things)環境に適さない。そのような環境では、物理的メモリ、演算および記憶資源などが制限される可能性があり、またレポジトリにアクセスする直接的なネットワークを欠く場合がある。資源が制約された環境に適したプロセスエンジンを作成することは有用である。
この出願の発明に関連する先行技術文献情報としては、以下のものがある(国際出願日以降国際段階で引用された文献及び他国に国内移行した際に引用された文献を含む)。
(先行技術文献)
(特許文献)
(特許文献1) 米国特許出願公開第2016/0210173号明細書
(特許文献2) 米国特許出願公開第2011/0202908号明細書
(特許文献3) 米国特許出願公開第2004/0015943号明細書
(特許文献4) 米国特許第8,458,658号明細書
(特許文献5) 米国特許第9,614,931号明細書
(特許文献6) 米国特許出願公開第2007/0220509号明細書
(特許文献7) 米国特許出願公開第2010/0318985号明細書
(特許文献8) 米国特許出願公開第2010/0332876号明細書
(特許文献9) 米国特許第7,299,346号明細書
(特許文献10) 米国特許出願公開第2013/0067461号明細書
(特許文献11) 米国特許第8,219,987号明細書
(特許文献12) 米国特許出願公開第2004/0010734号明細書
(特許文献13) 米国特許第7,765,541号明細書
(特許文献14) 米国特許第7,299,346号明細書
(特許文献15) 米国特許第7,971,182号明細書
(特許文献16) 米国特許出願公開第2017/0262272号明細書
(特許文献17) 米国特許出願公開第2008/0235710号明細書
(特許文献18) 米国特許第7,509,639号明細書
(特許文献19) 米国特許出願公開第2016/0210173号明細書
(特許文献20) 米国特許出願公開第2014/0007140号明細書
(特許文献21) 米国特許出願公開第2016/0094483号明細書
(特許文献22) 米国特許第7,900,200号明細書
(特許文献23) 米国特許第8,984,259号明細書
(特許文献24) 米国特許第9,021,490号明細書
(特許文献25) 米国特許出願公開第2009/0165010号明細書
(特許文献26) 米国特許出願公開第2013/0041706号明細書
(特許文献27) 米国特許出願公開第2013/0212600号明細書
(特許文献28) 国際公開第2011/011120号
(特許文献29) 国際公開第2015/002581号
(特許文献30) 国際公開第2016/048208号
(非特許文献)
(非特許文献1) CAPPIELLO et al., MicroMAIS: Executing and Orchestrating Web Services on Constrained Mobile Devices, Software: Practice and Experience, pgs 1−35, 2011
【図面の簡単な説明】
【0003】
本発明の様々な実施形態が下記の詳細な説明と添付の図面に開示される。
図1図1は、特別仕様のプロセスエンジンを作成するシステムの一実施形態を示すブロック図である。
図2図2は、プロセス・アプリケーション・ワークスペースの一実施形態を示すフローチャートである。
図3図3は、特別仕様のプロセスエンジンの作成についての一実施形態を示すフローチャートである。
図4図4は、アクティビティ及びトリガーのセットの受け取りについての一実施形態を示すフローチャートである。
図5図5は、プロセスエンジン用の最小限のコンポーネントのセットを決定するプロセスの一実施形態を示す図である。
【発明を実施するための形態】
【0004】
本発明は様々な手段で実施可能であり、プロセス、装置、システム、組成物、コンピュータ可読記憶媒体上に具現化されたコンピュータプログラム製品、及び/又はプロセッサ、例えばプロセッサに結合されたメモリに記憶され及び/又は提供される命令を実行するように構成されたプロセッサ等が含まれる。本明細書では、これらの実装形態、又は本発明がとり得るその他の形態を技術として参照することができる。一般に、開示されるプロセスの工程の順序は、本発明の範囲内で変更されてもよい。別段の記載がない限り、プロセッサ又はメモリなどのタスクを実行するように構成されたものとして記載されているコンポーネントは、所与の時間にタスクを実行するように一時的に構成された一般的なコンポーネント、又はそのタスクを行うために製造された特定のコンポーネントによって実行される。本明細書で使用する「プロセッサ」という用語は、コンピュータプログラム命令などのデータを処理するように構成された1若しくはそれ以上のデバイス、回路、及び/又は処理コアを指す。
【0005】
本発明の1又はそれ以上の実施形態の詳細を、本発明の原理を説明する添付の図面と共に以下に説明する。本発明はそのような実施形態に関連して説明されるが、本発明はいずれの実施形態にも限定されるものではない。本発明の範囲は、特許請求の範囲によってのみ限定され、本発明は、多数の代替、変形及び等価物を含むものである。本発明の完全な理解を提供するために、多くの具体的な詳細が以下の説明に記載されている。これらの詳細は、例示のために提供されており、本発明は、これらの特定の詳細の一部又は全部を伴わずに、請求項に従って実施することができる。明瞭化のために、本発明に関連する技術分野において周知の技術内容は、本発明が不必要に不明瞭にならないように詳細には記載していない。
【0006】
特別仕様のプロセスエンジンを有するプロセスアプリケーションを作成し提供する技術が開示される。特別仕様のプロセスエンジンは、特定のプロセスアプリケーションに必要な機能のみを含むように作成される。プロセスアプリケーションは、1若しくはそれ以上のプロセスフローを含む。各プロセスフローは、1若しくはそれ以上のアクティビティが続くトリガーを含んでもよい。前記トリガー及びアクティビティは、個々のコードのセットにより定義されてよく、それはライブラリ、コンポーネント、及び/又はファンクションの参照を含んでもよい。前記トリガー及びアクティビティは開発者によりそれらが展開されることとなる前記プロセスアプリケーションについて気にせずに作成され得る。その結果、トリガー及びアクティビティの組み合わせには、特定のプロセスアプリケーションに使用されない、及び/又は不必要な従属物が含まれてもよい。前記コンパイルされたプロセスアプリケーションから作成される前記プロセスエンジンのサイズ及びフットプリントを減らすため、前記トリガー及びアクティビティが解析されて、当該プロセスアプリケーションを実行することとなるプロセスエンジンを作成するのに必要な最小限のコンポーネントのセットを決定する。
【0007】
様々な実施形態において、本明細書に開示されるような特別仕様のプロセスエンジンを有するプロセスアプリケーションは、例えば、より用途の広い(特別仕様でない)プロセスエンジンが使用されるアプリケーション又は環境と比べて、より小さなメモリフットプリントを有し、及び/又は、より早くロードすることができる。このような特別仕様のプロセスエンジンを含む前記プロセスアプリケーションがコンパイルされると、コンピュータのRAMメモリにおける当該特別仕様のプロセスエンジンの占めるサイズが従来のプロセスエンジンでのサイズよりも小さいため、結果としてできる実行ファイルは相対的に小さなフットプリントを有する。また、このような技術は、前記デバイスにダウンロードされる前記実行ファイルが従来のプロセスエンジンの実行ファイルよりもサイズが小さいために、軽いプロセスアプリケーションを作成する。このような特別仕様のプロセスエンジンを有するプロセスアプリケーションが展開されるデバイスは、スタートアップが早くなり得る。これは、前記特別仕様のプロセスエンジンにおける従属物が少なくなる結果、スタートアップ時の初期化に必要なコンポーネントがより少なくなるためである。
【0008】
図1は、システム100を示すブロックダイアグラムである。このシステム100は、特別仕様のプロセスエンジンを含むプロセスアプリケーションを作成する。この図示した例示において、システム100は、プロセスアプリケーション開発プラットフォーム110と、リモートデータベース116と、ネットワーク120と、デバイス122とを含む。
【0009】
前記プロセスアプリケーション開発プラットフォーム110は、プロセス・アプリケーション・ワークスペース105と、プリコンパイラ106と、アクティビティ及びトリガー作成部と、コンパイラ108と、及び/又は、データベース109とを含む。プロセスアプリケーション開発プラットフォーム110は、1若しくはそれ以上のコンピュータデバイスを用いて実行されてよく、例えば、コンピュータ、マルチプロセッサシステム、マイクロプロセッサ搭載システム、クラウドを用いたシステム、特定用途のデバイス、前述のシステム又はデバイスのいずれかを含む分散コンピューティング環境、又はその他の適切なハードウェア/ソフトウェア/ファームウェアの組み合わせであって、1若しくはそれ以上のプロセッサと当該プロセッサに接続され当該プロセッサに命令を与えるように構成されたメモリとを含むもの等を用いて実行されてよい。
【0010】
プロセスアプリケーションワークスペース105はユーザインターフェースであり、このユーザインターフェースにより、プロセスアプリケーションに含まれることとなる1若しくはそれ以上のプロセスフローをインテグレータ104が作成することができる。いくつかの実施形態において、前記1若しくはそれ以上のプロセスフローは、ビジュアル若しくはテキストエディタによって作成することができる。
【0011】
プレコンパイラ106は、インテグレータ104によって作成されるプロセスアプリケーションの1若しくはそれ以上のプロセスフローを分析し、当該プロセスアプリケーションの実行に必要な最小限のコンポーネントのセットを決定する。コンパイラ108は前記プロセスアプリケーションをコンパイルして実行ファイルにする。結果として作成されるコンパイルされたコードは、パッケージ化され、実行可能バイナリとして(例えばダウンロード等により)展開に使用可能なものとなる。前記実行ファイルは、例えばデバイス122等のデバイスで実行される場合、デバイス122がどのように動作するかを制御する特別仕様のプロセスエンジンである。前記データベース109は、1若しくはそれ以上の開発者、例えば開発者102によって作成されたアクティビティ及びトリガーを格納する。データベース109は、プロセスアプリケーション開発プラットフォーム110の内のメモリ及び/又は格納デバイス、プロセスエンジン開発部110に接続されたメモリ及び/又はデバイス、又はプロセスエンジン開発部110とネットワーク接続を介して接続されている任意のメモリ及び/又は格納デバイスであってよい。前記ネットワーク接続としては、有線または無線接続がある。
【0012】
プロセスアプリケーション開発プラットフォーム110は、開発者102及び/又はインテグレータ104によってアクセス自在である。開発者102は、アクティビティ及びトリガーを作成する人又はその他のエンティティ、例えばソフトウェア開発者などである。開発者102は、アクティビティ及びトリガー作成部107を用いてアクティビティ及び/又はトリガーを作成し得る。開発者により作成されるそれぞれのアクティビティ及びトリガーは、例えばGo,Python、C、C++等のプログラム言語を介して作成される一定のコード機能を自己に含むものであってもよい。dB109、116に格納される前記トリガー及びアクティビティは、複数の開発者により、例えば後にプロセスフローを形成する他人によって作成されてもよく、当該開発者のそれぞれは前記トリガー及びアクティビティがどのように組み合わされることとなるのかについて認識していなくてもよい。開発者により作成される前記トリガー及びアクティビティは、インテグレータによって作成されるプロセスフローにより使用されない機能又はプロセスコンポーネントを含んでもよい。インテグレータ104は、エンティティ、例えばソフトウェア開発者であって、特定用途の1若しくはそれ以上のプロセスフローから成るプロセスアプリケーションをプロセス・アプリケーション・ワークスペース105を介して作成する者等であってもよい。例えば、インテグレータは、システム更新、特定の機能、診断テスト等を行うデバイス用のプロセスフローを作成してもよい。インテグレータは、トリガーを選択して、プロセスフローおよび当該トリガー後に起動される1若しくはそれ以上のアクティビティを初期化する。インテグレータは、第1のプロセスフローのアクティビティから分岐する第2のプロセスフローを作成してもよく、又は前記トリガーの出力に基づく第2のプロセスフローを作成してもよい。
【0013】
リモートデータベース116は、他の開発者によって作成されたトリガーおよびアクティビティを格納する。例えば、リモートデータベース116は、例えばGitHub(登録商標)などのオープンソースデータベースであってもよい。インテグレータ104は、リモートデータベース116に格納されたトリガー及びアクティビティをプロセスフローのために選択することができる。これら選択されたトリガー及びアクティビティは、プロセスアプリケーション開発プラットフォーム110に取り込まれる。
【0014】
ネットワーク120は、プロセスアプリケーション開発プラットフォーム110とリモートデータベース116及びデバイス122とを接続する。ネットワーク120は、1若しくはそれ以上の以下:ローカルエリアネットワーク、有線ネットワーク、無線ネットワーク、インターネット、イントラネット、又はその他の任意の適切な通信ネットワークを有する。
【0015】
デバイス122は、前記特別仕様のプロセスエンジンを実行するターゲットデバイスである。例えば、デバイス122は、携帯式デバイス、相互接続デバイス、IoTデバイス、又はプロセスエンジンを実行する任意のデバイスであってよい。前記プロセスアプリケーションがコンパイルされると、前記実行可能な特別仕様のプロセスエンジンはデバイス122に展開される。前記特別仕様のプロセスエンジンは、デバイス122により実行されると、当該デバイスの動作を制御する。
【0016】
図2は、プロセス・アプリケーション・ワークスペース200の一実施形態を示すフローチャートである。いくつかの実施形態において、プロセス・アプリケーション・ワークスペース200は、プロセス・アプリケーション・ワークスペース105を用いて実装することができる。プロセスアプリケーションは、1若しくはそれ以上のプロセスフローを有し、各プロセスフローはトリガーと1若しくはそれ以上のアクティビティとを有する。アクティビティの非限定的な例示としては、カウンタアクティビティ、記録アクティビティ、休止アクティビティ、Constrained Application. Protocol (CoAP)アクティビティ、およびハイパーテキスト・トランスファー・プロトコル(HTTP)アクティビティが含まれる。
【0017】
この図示される例示において、プロセスアプリケーション200は、プロセスフローAと、プロセスフローBと、プロセスフローCと、プロセスフローDとを含む。プロセスフローAは、トリガー202により開始し、さらにアクティビティ204と、アクティビティ206と、アクティビティ208とを含む。プロセスフローBは、トリガー210と、アクティビティ212と、アクティビティ214と、アクティビティ216と、アクティビティ218とを有する。プロセスフローCは、トリガー220と、アクティビティ222と、アクティビティ224とを有する。プロセスフローDは、トリガー220と、アクティビティ222と、アクティビティ226と、アクティビティ228と、アクティビティ230と、アクティビティ232とを有する。プロセスフローは一般に、或るトリガーにより開始し、それに1若しくはそれ以上のアクティビティが続くものであり、当該1若しくはそれ以上のアクティビティは、入力として進行するトリガー及びアクティビティの出力を使用する。
【0018】
いくつかの実施形態において、前記プロセスフローは複数の経路を含む。例えば、プロセスフローAは、トリガー202と、アクティビティ204と、アクティビティ206と、アクティビティ208とを有する。アクティビティ204は、アクティビティ206又はアクティビティ208により使用される値を出力する。アクティビティ204の出力に応じて、アクティビティ206が起動され、又はアクティビティ208が起動される。
【0019】
その他の実施形態では、前記プロセスフローは或るプロセスフローによっては起動されないアクティビティを含むことができる。例えば、プロセスフローBは、トリガー210と、アクティビティ212と、アクティビティ214と、アクティビティ216と、アクティビティ218とを有する。アクティビティ212は、アクティビティ214に使用される値を出力してよく、アクティビティ214はアクティビティ216に使用される値を出力する。インテグレータはプロセスフローBを作成し、当該プロセスフローにアクティビティ218を含む決定をしてもよい。しかしながら、インテグレータの気付かないところで、アクティビティ218はトリガー210又はアクティビティ212の出力でない所定の入力を実行に必要とする。このような状況では、前記プレコンパイラは、前記プロセスフローにおいて使用されないアクティビティを決定し、当該使用されないアクティビティに付随するコンポーネントがあればそれを前記プロセスフローから除去する。前記プロセスアプリケーションがその後コンパイラによってコンパイルされる時、前記特別仕様のプロセスエンジンは、より少ないメモリしか必要とせず、またより小さなフットプリントを有することとなるが、これは、当該プロセスエンジンがアクティビティ218に必要な任意の従属物およびコンポーネントを含まないためである。いくつかの実施形態において、トリガー及びアクティビティからの出力は続きのアクティビティを通過する。例えば、アクティビティ212は、アクティビティ214により使用されないがアクティビティ216に使用される値を出力してもよい。このような状況では、前記特別仕様のプロセスエンジンは、デバイスで実行される際、アクティビティ214の前又はこれと同時にアクティビティ216を実行してもよい。
【0020】
いくつかの実施形態において、複数のプロセスフローのうちの或るプロセスフローは、前記プロセスアプリケーションによって起動されない。例えば、インテグレータはプロセスフローCを作成する。インテグレータは、トリガー220と、アクティビティ222と、アクティビティ224とを追加してプロセスフローCを作成する。また、インテグレータはトリガー220の出力に基づくその他の1のプロセスフローであるプロセスフローDを作成することを決定してもよい。トリガー220及びアクティビティ222に加えて、プロセスフローDは、アクティビティ226と、アクティビティ228と、アクティビティ230と、アクティビティ232とを含む。しかしながら、インテグレータの気付かないところで、アクティビティ226、228、230、及び232は、トリガー220又はアクティビティ222の出力でない所定の入力を必要とする。このような状況では、前記プレコンパイラは、前記プロセスフローにおいて使用されないアクティビティを検出し、当該使用されないアクティビティに付随するコンポーネントがある場合、それを前記プロセスフローから除去するものであり、かかる場合、それはプロセスフローDを前記プロセスアプリケーションから効率的に除去するものである。前記プロセスアプリケーションが後にコンパイラによってコンパイルされる時、前記特別仕様のプロセスエンジンはより少ないメモリしか必要とせず、より小さなフットプリントを有することとなる。これは、前記特別仕様のプロセスエンジンが、プロセスフローDに必要な従属物及びコンポーネントを含まないが、プロセスフローCに必要な従属物及びコンポーネントを依然として含むこととなるためである。
【0021】
図3は、特別仕様のプロセスエンジンを作成する工程の一実施形態を示すフローチャートである。いくつかの実施形態において、図3のプロセス300は、プロセスアプリケーション開発プラットフォーム、例えばプロセスアプリケーション開発プラットフォーム110により実装される。
【0022】
302では、アクティビティ及びトリガーのセットを受け取って、前記プロセスアプリケーションの1若しくはそれ以上のプロセスフローを作成する。前記インテグレータには、ユーザインターフェース、例えばFlogo(登録商標)インターフェースなどを介して、アクティビティ及びトリガーを選択する機能が提供される。いくつかの実施形態において、インテグレータは、利用可能なアクティビティ及びトリガーのリストが提供され、当該リストから1若しくはそれ以上のアクティビティ及びトリガーを選択する。その他の実施形態では、インテグレータは、ローカルデータベースから利用可能なアクティビティ及びトリガーを検索ことができ、当該検索による検索結果から1若しくはそれ以上のアクティビティを選択する。その他の実施形態では、インテグレータは、利用可能なアクティビティ及びトリガーについてリモートデータベースを検索ことができ、1若しくはそれ以上のアクティビティ及びトリガーを当該リモートデータベースから選択する。その他の実施形態では、コマンドラインインターフェースを介してインテグレータが利用可能なアクティビティ及びトリガーの検索し、1若しくはそれ以上のアクティビティ及びトリガーを選択することができる。
【0023】
304では、前記プロセスアプリケーションのための最小限のプロセス・エンジン・コンポーネントのセットが決定される。前記最小限のプロセス・エンジン・コンポーネントのセットとは、インテグレータによって前記プロセスアプリケーションのために定義された1若しくはそれ以上のプロセスフローをサポートするのに実際に必要とされる最小の数のプロセス・エンジン・コンポーネントである。アクティビティ又はトリガーは前記プロセスアプリケーションによって使用されないコンポーネントを含んでもよい。このようなコンポーネントは、特定され除去される。
【0024】
トリガー及び/又はアクティビティは、前記プロセスアプリケーションを実行するのに必要な1若しくはそれ以上のバインディングと関連づけられていてもよい。例えば、バインディングとしては、HTTPバインディング、MQTTバインディング、WebSocketsバインディング、CoAPバインディング、FTLバインディング等が挙げられる。前記プロセスアプリケーションによって実際に起動される前記バインディングが特定され当該プロセスアプリケーションに加えられる。
【0025】
306では、前記プロセスアプリケーションを有する前記トリガー及びアクティビティがコンパイルされて実行可能バイナリが作成される。いくつかの実施形態において、前記プロセスアプリケーションに参照されないトリガー及びアクティビティを付随するプロセス・エンジン・コンポーネントは無視され実行ファイルから除外される。前記プロセスアプリケーションに実際に起動されるバインディングが特定され前記実行ファイルに加えられる。
【0026】
308では、前記特別仕様のプロセスエンジンを有する実行ファイルがデバイスに展開される。前記使用されないプロセス・エンジン・コンポーネントが実行ファイルから除去されているため、前記特別仕様のプロセスエンジンは、デバイスにより実行されると、より迅速に作動状態(online)をもたらす。いくつかの実施形態において、前記実行ファイルは、無線接続を介して展開され前記デバイスにダウンロードされる。その他の実施形態では、前記実行ファイルは物理的メモリデバイスに展開され前記デバイスに転送される。その他の実施形態では、前記実行ファイルは有線接続を介して前記デバイスに展開される。
【0027】
図4は、アクティビティ及びトリガーのセットを受け取る工程の一実施形態を示すフローチャートである。いくつかの実施形態において、図4のプロセスはプロセスアアプリケーション開発プラットフォーム、例えばプロセスアアプリケーション開発プラットフォーム110によって実行されてよい。いくつかの実施形態では、図4のプロセスは実行されて図3の工程302を行う。
【0028】
402では、利用可能なトリガーのリストが前記プロセスアプリケーション開発プロットフォームのユーザインターフェースを介して提供される。データベース109及びリモートデータベース116等のデータベースがトリガーのセットを格納する。いくつかの実施形態において、インテグレータには、利用可能なトリガーのリストが提供される。その他の実施形態では、インテグレータは、ローカルデータベース又はリモートデータベースから利用可能なトリガーを検索することができる。その他の実施形態では、インテグレータは、コマンドラインインターフェースを介して利用可能なトリガーを検索することができる。
【0029】
404では、トリガーの選択を前記プロセスアプリケーション開発プラットフォームのユーザインターフェースを介して受け取る。いくつかの実施形態において、インテグレータは前記リストからトリガーを選択することができる。その他の実施形態では、インテグレータは前記検索による検索結果から前記トリガーを選択することができる。その他の実施形態では、インテグレータは前記リモートデータベースからトリガーを選択することができる。その他の実施形態では、インテグレータは、前記トリガーを選択してプロセス・アプリケーション・ワークスペースへドラッグ&ドロップすることができる。その他の実施形態では、インテグレータは、コマンドラインインターフェースを介して入手可能なトリガーを選択することができる。
【0030】
406では、前記選択されたトリガーに付随する利用可能なアクティビティのリストが前記プロセスアプリケーション開発プラットフォームのユーザインターフェースを介して提供される。データベース109及びリモートデータベース116等のデータベースがアクティビティのセットを格納する。いくつかの実施形態において、ユーザインターフェースを介して前記利用可能なアクティビティ全てが示される。その他の実施形態では、インテグレータは、ローカルデータベースから利用可能なアクティビティを検索することができ、また前記検索による検索結果から1若しくはそれ以上のアクティビティを選択することができる。その他の実施形態では、インテグレータは、利用可能なアクティビティについてリモートデータベースを検索することができ、また当該リモートデータベースから1若しくはそれ以上のアクティビティを選択することができる。その他の実施形態では、インテグレータは、コマンドラインインターフェースを介して利用可能なアクティビティを検索することができる。その他の実施形態では、前記選択されたトリガーに基づいて前記アクティビティのサブセットがインテグレータに提供される。いくつかの実施形態において、アクティビティの前記サブセットは前記プロセスアプリケーションの内容に基づいて前記アクティビティのセットからフィルター処理されていてもよい。いくつかの実施形態において、アクティビティの前記サブセットには、前記トリガーの出力を入力として使用するアクティビティが含まれる。
【0031】
408では、アクティビティの選択を前記プロセスアプリケーション開発プラットフォームのユーザインターフェースを介して受け取る。いくつかの実施形態において、前記アクティビティはリストから選択される。その他の実施形態では、前記アクティビティは、プロセス・アプリケーション・ワークスペースへドラッグ&ドロップされる。その他の実施形態では、インテグレータはコマンドラインインターフェースを介して利用可能なアクティビティを選択することができる。
【0032】
410では、利用可能なアクティビティのリストが提供される。いくつかの実施形態において、データベースに格納された前記アクティビティ全てが提供される。その他の実施形態では、前記アクティビティのサブセットが提供される。例えば、406で選択された前記アクティビティの出力を入力として使用するアクティビティのみが提供される。その他の実施形態では、利用可能なアクティビティのリストには406で選択された前記アクティビティを含まれない。例えば、インテグレータは、同じアクティビティの2つのインスタンスを含むプロセスフローを作成しない。
【0033】
図5は、プロセスエンジン用の最小限のコンポーネントのセットを決定するプロセスの一実施形態を示す。いくつかの実施形態において、図5のプロセスは、プロセスアプリケーション開発プラットフォーム、例えばプロセスアプリケーション開発プラットフォーム110によって実行される。いくつかの実施形態において、図5のプロセスは、図3の工程304を行うのに使用される。
【0034】
502では、前記プロセスフローのコンポーネントが決定される。いくつかの実施形態において、プロセスフローは、トリガーと、1若しくはそれ以上のアクティビティとを含む。
【0035】
504では、前記プロセスフローを実行するために実際に起動される又は起動され得るプロセス・エンジン・コンポーネントが決定される。プレコンパイラ106のようなプレコンパイラがプロセスフローのトリガー及びアクティビティを解析し、どのトリガー及び/又はアクティビティが当該プロセスフローにより実際に使用されるのかを決定してもよい。例えば、アプリケーションFooを考えると、これにはConstrained Aplication Protocol(CoAP)およびハイパーテキスト・トランスファー・プロトコル(HTTP)アクティビティが含まれる。そのアプリケーションを起動するために、これらのCoAP及びHTTPアクティビティにより定義され、また必要なライブラリのみを含むエンジンがカスタム構築される。その他のアクティビティと関連する任意のライブラリ、例えば、設計中に開発者が利用可能なJAVA(登録商標) Message Service(JMS)、MQTT(MQ Telemetry Transport)等は、この特定のアプリケーションを実行するために構築された前記プロセスエンジンの一部に含まれない。その他の例では、Constrained Aplication Protocol(CoAP)およびハイパーテキスト・トランスファー・プロトコル(HTTP)アクティビティのサポートに関連づけられたライブラリが、このようなプロトコルでは使用されないが、このようなプロトコルに必要なコンポーネントとして同ライブラリに含まれることとなる要素を含んでもよい。
【0036】
506では、ユーザによって定義されたプロセスフローに基づいて、使用されないプロセス・エンジン・コンポーネントが例えばプロセスアプリケーションに含まれることとなるプロセスコンポーネントのセットから除去され又は省かれる。トリガー又はアクティビティが実行ファイルに含まれないようにすることによって、前記トリガー又はアクティビティに付随する従属ライブラリ及びコードもまた前記実行ファイルから除外される。いくつかの実施形態において、前記使用されないコンポーネントには、ライブラリ若しくはその一部、ファンクション、又はコンポーネントが含まれる。その他の実施形態では、前記使用されないコンポーネントは或るアクティビティであってよい。その他の実施形態では、前記使用されないコンポーネントは、分岐したトリガー及びアクティビティ全体のうちの一部である。例えば、20個のアクティビティからなり3つのプロセスフローに分かれるプロセスアプリケーションを考える。前記プロセスアプリケーションの2つのアクティビティ間における経路移行上に表現式が構築される性質ために、前記プロセスアプリケーションの一部には到達不能である。前記プレコンパイラは、前記到達不能なプロセスフローに沿ったアクティビティによりもたらされるコンポーネント及び従属物の全てを捨てることができる。
【0037】
前述の実施形態は理解を明確にするために詳細に記載されているが、本発明は提供される詳細に限定されるものではない。 本発明を実施する多くの代替方法がある。開示された実施形態は例示であり、限定的なものではない。
図1
図2
図3
図4
図5