(57)【特許請求の範囲】
【請求項１】
コンピュータにより実行される方法であって、
コンピュータが、プロセスアプリケーションに関連するトリガーの選択をユーザインターフェースを介して受け取る工程と、
コンピュータが、前記選択されたトリガーに基づいて前記プロセスアプリケーションに関連する１若しくはそれ以上のアクティビティの選択をユーザインターフェースを介して受け取る工程と、
コンピュータが、前記プロセスアプリケーションを実行するのに必要な最小限のプロセス・エンジン・コンポーネントのセットを決定する工程であって、この工程は、
コンピュータが、前記選択されたトリガー及び前記選択された１若しくはそれ以上のアクティビティに関連するプロセスフローを解析することで、前記選択されたトリガー及び前記選択された１若しくはそれ以上のアクティビティのそれぞれに関連するプロセス・エンジン・コンポーネントを特定する工程と、
コンピュータが、前記解析に基づいて、前記特定されたプロセス・エンジン・コンポーネントのうちの少なくとも１つのプロセス・エンジン・コンポーネントが前記プロセスアプリケーションの動作中に当該プロセスアプリケーションによって起動されないことを判定する工程であって、当該少なくとも１つのプロセス・エンジン・コンポーネントは前記選択された１若しくはそれ以上のアクティビティのうちの少なくとも１つのアクティビティに関連するものであり、当該少なくとも１つのアクティビティの入力は前記少なくとも１つのアクティビティに先行する前記選択されたトリガー及び前記選択された１若しくはそれ以上のアクティビティのいずれの出力でもないものである、前記判定する工程と、
コンピュータが、前記少なくとも１つのプロセス・エンジン・コンポーネントを前記特定されたプロセス・エンジン・コンポーネントから除去して、前記最小限のプロセス・エンジン・コンポーネントのセットを形成する工程と
を含むものである、前記決定する工程と、
コンピュータが、前記プロセスアプリケーションをコンパイルして、前記決定された最小限のプロセス・エンジン・コンポーネントのセットを含む実行可能コードを生成する工程と
を有する方法。
【請求項２】
請求項１に記載の方法において、さらに、コンピュータが、前記実行可能コードをデバイスに展開する工程を有する、方法。
【請求項３】
請求項１に記載の方法において、さらに、コンピュータが、前記プロセスアプリケーションを定義するアクティビティ及びトリガーのセットを受け取る工程を有する、方法。
【請求項４】
請求項３に記載の方法において、前記アクティビティ及びトリガーのセットのうちの少なくとも１つのアクティビティ及びトリガーはローカルデータベースに保存されているものである、方法。
【請求項５】
請求項３に記載の方法において、前記アクティビティ及びトリガーのセットのうちの少なくとも１つのアクティビティ及びトリガーはリモートデータベースに保存されているものである、方法。
【請求項６】
請求項１に記載の方法において、さらに、
コンピュータが、前記選択されたトリガーに基づいて利用可能なアクティビティのセットをフィルター処理する工程と、
コンピュータが、前記フィルター処理された利用可能なアクティビティのセットを選択可能な選択肢として提供する工程と
を有するものである、方法
【請求項７】
請求項１に記載の方法において、さらに、
コンピュータが、前記選択された１若しくはそれ以上のアクティビティに基づいて利用可能なアクティビティのセットをフィルター処理する工程と、
コンピュータが、前記フィルター処理された利用可能なアクティビティのセットを選択可能な選択肢として提供する工程と
を有するものである、方法
【請求項８】
請求項１に記載の方法において、プロセスアプリケーションを実行するのに必要な最小限のプロセス・エンジン・コンポーネントのセットを決定する工程は、さらに、
コンピュータが、前記選択された１若しくはそれ以上のアクティビティのそれぞれ及び前記選択されたトリガーに関連するプロセスフローを解析してアクティビティの１若しくはそれ以上の分岐を特定する工程と、
コンピュータが、前記解析に基づいて、アクティビティの前記１若しくはそれ以上の分岐のうち動作中に前記プロセスアプリケーションによって起動されない分岐がある場合に、どの分岐が動作中に前記プロセスアプリケーションによって起動されないものであるのかを決定する工程と、
コンピュータが、前記プロセスアプリケーションによって起動されない分岐に関連する使用されない１若しくはそれ以上のプロセス・エンジン・コンポーネントを前記最小限のプロセス・エンジン・コンポーネントのセットから除外する工程と
を有するものである
、方法
【請求項９】
請求項１に記載の方法において、プロセスアプリケーションを実行するのに必要な最小限のプロセス・エンジン・コンポーネントのセットを決定する工程は、さらに、
コンピュータが、前記選択された１若しくはそれ以上のアクティビティのそれぞれ及び前記選択されたトリガーに関連するプロセスフローを解析して１若しくはそれ以上のライブラリを特定する工程と、
コンピュータが、前記解析に基づいて、前記特定された１若しくはそれ以上のライブラリのうち前記プロセスアプリケーションにおいて動作中に起動されないライブラリ若しくは部分がある場合、前記特定された１若しくはそれ以上のライブラリのうちどのライブラリが若しくはそのうちどの部分が前記プロセスアプリケーションにおいて動作中に起動されないものであるかを決定する工程と、
コンピュータが、使用されないライブラリ又はその部分を前記決定された最小限のプロセス・エンジン・コンポーネントのセットから除外する工程と
を有するものである、方法。
【請求項１０】
請求項１に記載の方法において、前記決定された最小限のプロセス・エンジン・コンポーネントのセットの少なくとも一部に基づいて前記プロセスアプリケーションをコンパイルして実行可能コードを生成する工程は、さらに、コンピュータが、前記実行可能コードに、前記決定された最小限のプロセス・エンジン・コンポーネントのセットに関連する１若しくはそれ以上のバインディングを含める工程を有するものである、方法。
【請求項１１】
コンピュータベースのシステムであって、
コンピュータが、プロセスアプリケーションに関連するトリガーの選択と、前記選択されたトリガーに基づいて前記プロセスアプリケーションに関連する１若しくはそれ以上のアクティビティの選択とをユーザインターフェースを介して受け取る受取部と、
コンピュータが、前記プロセスアプリケーションを実行するのに必要な最小限のプロセス・エンジン・コンポーネントのセットを決定するプロセスエンジンコンポーネントセット決定部であって、このプロセスエンジンコンポーネントセット決定部は、
コンピュータが、前記選択されたトリガー及び前記選択された１若しくはそれ以上のアクティビティに関連するプロセスフローを解析することで、前記選択されたトリガー及び前記選択された１若しくはそれ以上のアクティビティのそれぞれに関連するプロセス・エンジン・コンポーネントを特定する特定部と、
コンピュータが、前記解析に基づいて、前記特定されたプロセス・エンジン・コンポーネントのうちの少なくとも１つのプロセス・エンジン・コンポーネントが前記プロセスアプリケーションの動作中に当該プロセスアプリケーションによって起動されないことを判定する判定部であって、当該少なくとも１つのプロセス・エンジン・コンポーネントは前記選択された１若しくはそれ以上のアクティビティのうちの少なくとも１つのアクティビティに関連するものであり、当該少なくとも１つのアクティビティへの入力は前記少なくとも１つのアクティビティに先行する前記選択されたトリガー及び１若しくはそれ以上のアクティビティのいずれの出力でもないものである、前記判定部と、
コンピュータが、前記少なくとも１つのプロセス・エンジン・コンポーネントを前記特定されたプロセス・エンジン・コンポーネントから除去して、前記最小限のプロセス・エンジン・コンポーネントのセットを形成する形成部と
を含むものである、前記プロセスエンジンコンポーネントセット決定部と、
コンピュータが、前記プロセスアプリケーションをコンパイルして、前記決定された最小限のプロセス・エンジン・コンポーネントのセットを含む実行可能コードを生成する実行可能コード生成部と
を有するシステム。
【請求項１２】
請求項１１に記載のシステムにおいて、前記プロセスエンジンコンポーネントセット決定部は、さらに、コンピュータが、前記プロセスアプリケーションを定義するアクティビティ及びトリガーのセットを受け取るように構成されているものである、システム。
【請求項１３】
請求項１１に記載のシステムにおいて、前記プロセスエンジンコンポーネントセット決定部は、さらに
コンピュータが、前記選択されたトリガーに基づいて利用可能なアクティビティのセットをフィルター処理し、
コンピュータが、前記フィルター処理された利用可能なアクティビティのセットを選択可能な選択肢として提供する
ように構成されている、システム。
【請求項１４】
請求項１１に記載のシステムにおいて、前記プロセスエンジンコンポーネントセット決定部は、さらに
コンピュータが、前記選択されたアクティビティに基づいて利用可能なアクティビティのセットをフィルター処理し、
コンピュータが、前記フィルター処理された利用可能なアクティビティのセットを選択可能な選択肢として提供する
ように構成されている、システム。
【請求項１５】
請求項１１に記載のシステムにおいて、前記プロセスエンジンコンポーネントセット決定部は、さらに、
コンピュータが、前記選択された１若しくはそれ以上のアクティビティのそれぞれ及び前記選択されたトリガーに関連するプロセスフローを解析してアクティビティの１若しくはそれ以上の分岐を特定し、
コンピュータが、前記解析に基づいて、アクティビティの前記１若しくはそれ以上の分岐のうち動作中に前記プロセスアプリケーションにおいて起動されない分岐がある場合に、どの分岐が動作中に前記プロセスアプリケーションにおいて起動されないものであるのかを決定し、
コンピュータが、前記プロセスアプリケーションによって起動されない分岐に関連する使用されない１若しくはそれ以上のプロセス・エンジン・コンポーネントを前記最小限のプロセス・エンジン・コンポーネントのセットから除外する
ように構成されている、システム。
【請求項１６】
請求項１１に記載のシステムにおいて、前記プロセスエンジンコンポーネントセット決定部は、さらに、
コンピュータが、前記選択された１若しくはそれ以上のアクティビティのそれぞれ及び前記選択されたトリガーに関連するプロセスフローを解析して１若しくはそれ以上のライブラリを特定し、
コンピュータが、前記解析に基づいて、前記特定された１若しくはそれ以上のライブラリのうち前記プロセスアプリケーションにおいて動作中に起動されないライブラリ若しくは部分がある場合、前記特定された１若しくはそれ以上のライブラリのうちどのライブラリが若しくはそのうちどの部分が前記プロセスアプリケーションにおいて動作中に起動されないものであるかを決定し、
コンピュータが、使用されないライブラリを前記最小限のプロセス・エンジン・コンポーネントのセットから除外する
ように構成されている、システム。
【請求項１７】
非一時的なコンピュータ可読媒体に記録されたコンピュータプログラム製品であって、
コンピュータが、プロセスアプリケーションに関連するトリガーの選択をユーザインターフェースを介して受け取る工程と、
コンピュータが、前記選択されたトリガーに基づいて前記プロセスアプリケーションに関連する１若しくはそれ以上のアクティビティの選択をユーザインターフェースを介して受け取る工程と、
前記プロセスアプリケーションを実行するのに必要な最小限のプロセス・エンジン・コンポーネントのセットを決定する工程であって、この工程は、
コンピュータが、前記選択されたトリガー及び前記選択された１若しくはそれ以上のアクティビティに関連するプロセスフローを解析することで、前記選択されたトリガー及び前記選択された１若しくはそれ以上のアクティビティそれぞれに関連するプロセス・エンジン・コンポーネントを特定する工程と、
コンピュータが、前記解析に基づいて、前記特定されたプロセス・エンジン・コンポーネントのうちの少なくとも１つのプロセス・エンジン・コンポーネントが前記プロセスアプリケーションの動作中に当該プロセスアプリケーションによって起動されないことを判定する工程であって、当該少なくとも１つのプロセス・エンジン・コンポーネントは前記選択された１若しくはそれ以上のアクティビティのうちの少なくとも１つのアクティビティに関連するものであり、当該少なくとも１つのアクティビティへの入力は前記少なくとも１つのアクティビティに先行する前記選択されたトリガー及び１若しくはそれ以上のアクティビティのいずれの出力でもないものである、前記判定する工程と、
コンピュータが、前記少なくとも１つのプロセス・エンジン・コンポーネントを前記特定されたプロセス・エンジン・コンポーネントから除去して、前記最小限のプロセス・エンジン・コンポーネントのセットを形成する工程と
を含むものである、前記決定する工程と、
コンピュータが、前記プロセスアプリケーションをコンパイルして、前記決定された最小限のプロセス・エンジン・コンポーネントのセットを含む実行可能コードを生成する工程と
を実行するための命令を有する、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、２０１６年５月１３日に出願された'最小限のメモリ及びディスク資源消費のカスタム構築式プロセスエンジン'と題する米国仮特許出願第６２/３３６，４７５号に基づく優先権を主張するものであり、この参照によりすべての目的でこれを本明細書に組み込むものとする。
【背景技術】
【０００２】
従来のプロセスエンジンは、凡用の一体型サーバソフトウェアであり、当該サーバソフトウェアにはアプリケーション開発者によって設計された特別仕様のプロセスアプリケーションがロードされる。プロセスエンジンには、任意のアプリケーション開発者に必要とされる機能一式が含まれる。従来のプロセスエンジンは、機能の完全性を目指して構築され、結果的にいずれかの特定のプロセスアプリケーション用メモリ及びディスクフットプリントよりも大きく最適性に劣る。故に、従来のプロセスエンジンは、資源が制約された環境、例えば組み込み型の演算及びＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）環境に適さない。そのような環境では、物理的メモリ、演算および記憶資源などが制限される可能性があり、またレポジトリにアクセスする直接的なネットワークを欠く場合がある。資源が制約された環境に適したプロセスエンジンを作成することは有用である。
この出願の発明に関連する先行技術文献情報としては、以下のものがある（国際出願日以降国際段階で引用された文献及び他国に国内移行した際に引用された文献を含む）。
（先行技術文献）
（特許文献）
（特許文献１）  米国特許出願公開第２０１６／０２１０１７３号明細書
（特許文献２）  米国特許出願公開第２０１１／０２０２９０８号明細書
（特許文献３）  米国特許出願公開第２００４／００１５９４３号明細書
（特許文献４）  米国特許第８，４５８，６５８号明細書
（特許文献５）  米国特許第９，６１４，９３１号明細書
（特許文献６）  米国特許出願公開第２００７／０２２０５０９号明細書
（特許文献７）  米国特許出願公開第２０１０／０３１８９８５号明細書
（特許文献８）  米国特許出願公開第２０１０／０３３２８７６号明細書
（特許文献９）  米国特許第７，２９９，３４６号明細書
（特許文献１０）  米国特許出願公開第２０１３／００６７４６１号明細書
（特許文献１１）  米国特許第８，２１９，９８７号明細書
（特許文献１２）  米国特許出願公開第２００４／００１０７３４号明細書
（特許文献１３）  米国特許第７，７６５，５４１号明細書
（特許文献１４）  米国特許第７，２９９，３４６号明細書
（特許文献１５）  米国特許第７，９７１，１８２号明細書
（特許文献１６）  米国特許出願公開第２０１７／０２６２２７２号明細書
（特許文献１７）  米国特許出願公開第２００８／０２３５７１０号明細書
（特許文献１８）  米国特許第７，５０９，６３９号明細書
（特許文献１９）  米国特許出願公開第２０１６／０２１０１７３号明細書
（特許文献２０）  米国特許出願公開第２０１４／０００７１４０号明細書
（特許文献２１）  米国特許出願公開第２０１６／００９４４８３号明細書
（特許文献２２）  米国特許第７，９００，２００号明細書
（特許文献２３）  米国特許第８，９８４，２５９号明細書
（特許文献２４）  米国特許第９，０２１，４９０号明細書
（特許文献２５）  米国特許出願公開第２００９／０１６５０１０号明細書
（特許文献２６）  米国特許出願公開第２０１３／００４１７０６号明細書
（特許文献２７）  米国特許出願公開第２０１３／０２１２６００号明細書
（特許文献２８）  国際公開第２０１１／０１１１２０号
（特許文献２９）  国際公開第２０１５／００２５８１号
（特許文献３０）  国際公開第２０１６／０４８２０８号
（非特許文献）
（非特許文献１）  ＣＡＰＰＩＥＬＬＯ  ｅｔ  ａｌ．，  ＭｉｃｒｏＭＡＩＳ：  Ｅｘｅｃｕｔｉｎｇ  ａｎｄ  Ｏｒｃｈｅｓｔｒａｔｉｎｇ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  ｏｎ  Ｃｏｎｓｔｒａｉｎｅｄ  Ｍｏｂｉｌｅ  Ｄｅｖｉｃｅｓ，  Ｓｏｆｔｗａｒｅ：  Ｐｒａｃｔｉｃｅ  ａｎｄ  Ｅｘｐｅｒｉｅｎｃｅ，  ｐｇｓ  １−３５，  ２０１１
【図面の簡単な説明】
【０００３】
本発明の様々な実施形態が下記の詳細な説明と添付の図面に開示される。
【図１】図１は、特別仕様のプロセスエンジンを作成するシステムの一実施形態を示すブロック図である。
【図２】図２は、プロセス・アプリケーション・ワークスペースの一実施形態を示すフローチャートである。
【図３】図３は、特別仕様のプロセスエンジンの作成についての一実施形態を示すフローチャートである。
【図４】図４は、アクティビティ及びトリガーのセットの受け取りについての一実施形態を示すフローチャートである。
【図５】図５は、プロセスエンジン用の最小限のコンポーネントのセットを決定するプロセスの一実施形態を示す図である。
【発明を実施するための形態】
【０００４】
本発明は様々な手段で実施可能であり、プロセス、装置、システム、組成物、コンピュータ可読記憶媒体上に具現化されたコンピュータプログラム製品、及び／又はプロセッサ、例えばプロセッサに結合されたメモリに記憶され及び／又は提供される命令を実行するように構成されたプロセッサ等が含まれる。本明細書では、これらの実装形態、又は本発明がとり得るその他の形態を技術として参照することができる。一般に、開示されるプロセスの工程の順序は、本発明の範囲内で変更されてもよい。別段の記載がない限り、プロセッサ又はメモリなどのタスクを実行するように構成されたものとして記載されているコンポーネントは、所与の時間にタスクを実行するように一時的に構成された一般的なコンポーネント、又はそのタスクを行うために製造された特定のコンポーネントによって実行される。本明細書で使用する「プロセッサ」という用語は、コンピュータプログラム命令などのデータを処理するように構成された１若しくはそれ以上のデバイス、回路、及び／又は処理コアを指す。
【０００５】
本発明の１又はそれ以上の実施形態の詳細を、本発明の原理を説明する添付の図面と共に以下に説明する。本発明はそのような実施形態に関連して説明されるが、本発明はいずれの実施形態にも限定されるものではない。本発明の範囲は、特許請求の範囲によってのみ限定され、本発明は、多数の代替、変形及び等価物を含むものである。本発明の完全な理解を提供するために、多くの具体的な詳細が以下の説明に記載されている。これらの詳細は、例示のために提供されており、本発明は、これらの特定の詳細の一部又は全部を伴わずに、請求項に従って実施することができる。明瞭化のために、本発明に関連する技術分野において周知の技術内容は、本発明が不必要に不明瞭にならないように詳細には記載していない。
【０００６】
特別仕様のプロセスエンジンを有するプロセスアプリケーションを作成し提供する技術が開示される。特別仕様のプロセスエンジンは、特定のプロセスアプリケーションに必要な機能のみを含むように作成される。プロセスアプリケーションは、１若しくはそれ以上のプロセスフローを含む。各プロセスフローは、１若しくはそれ以上のアクティビティが続くトリガーを含んでもよい。前記トリガー及びアクティビティは、個々のコードのセットにより定義されてよく、それはライブラリ、コンポーネント、及び／又はファンクションの参照を含んでもよい。前記トリガー及びアクティビティは開発者によりそれらが展開されることとなる前記プロセスアプリケーションについて気にせずに作成され得る。その結果、トリガー及びアクティビティの組み合わせには、特定のプロセスアプリケーションに使用されない、及び／又は不必要な従属物が含まれてもよい。前記コンパイルされたプロセスアプリケーションから作成される前記プロセスエンジンのサイズ及びフットプリントを減らすため、前記トリガー及びアクティビティが解析されて、当該プロセスアプリケーションを実行することとなるプロセスエンジンを作成するのに必要な最小限のコンポーネントのセットを決定する。
【０００７】
様々な実施形態において、本明細書に開示されるような特別仕様のプロセスエンジンを有するプロセスアプリケーションは、例えば、より用途の広い（特別仕様でない）プロセスエンジンが使用されるアプリケーション又は環境と比べて、より小さなメモリフットプリントを有し、及び／又は、より早くロードすることができる。このような特別仕様のプロセスエンジンを含む前記プロセスアプリケーションがコンパイルされると、コンピュータのＲＡＭメモリにおける当該特別仕様のプロセスエンジンの占めるサイズが従来のプロセスエンジンでのサイズよりも小さいため、結果としてできる実行ファイルは相対的に小さなフットプリントを有する。また、このような技術は、前記デバイスにダウンロードされる前記実行ファイルが従来のプロセスエンジンの実行ファイルよりもサイズが小さいために、軽いプロセスアプリケーションを作成する。このような特別仕様のプロセスエンジンを有するプロセスアプリケーションが展開されるデバイスは、スタートアップが早くなり得る。これは、前記特別仕様のプロセスエンジンにおける従属物が少なくなる結果、スタートアップ時の初期化に必要なコンポーネントがより少なくなるためである。
【０００８】
図１は、システム１００を示すブロックダイアグラムである。このシステム１００は、特別仕様のプロセスエンジンを含むプロセスアプリケーションを作成する。この図示した例示において、システム１００は、プロセスアプリケーション開発プラットフォーム１１０と、リモートデータベース１１６と、ネットワーク１２０と、デバイス１２２とを含む。
【０００９】
前記プロセスアプリケーション開発プラットフォーム１１０は、プロセス・アプリケーション・ワークスペース１０５と、プリコンパイラ１０６と、アクティビティ及びトリガー作成部と、コンパイラ１０８と、及び／又は、データベース１０９とを含む。プロセスアプリケーション開発プラットフォーム１１０は、１若しくはそれ以上のコンピュータデバイスを用いて実行されてよく、例えば、コンピュータ、マルチプロセッサシステム、マイクロプロセッサ搭載システム、クラウドを用いたシステム、特定用途のデバイス、前述のシステム又はデバイスのいずれかを含む分散コンピューティング環境、又はその他の適切なハードウェア／ソフトウェア／ファームウェアの組み合わせであって、１若しくはそれ以上のプロセッサと当該プロセッサに接続され当該プロセッサに命令を与えるように構成されたメモリとを含むもの等を用いて実行されてよい。
【００１０】
プロセスアプリケーションワークスペース１０５はユーザインターフェースであり、このユーザインターフェースにより、プロセスアプリケーションに含まれることとなる１若しくはそれ以上のプロセスフローをインテグレータ１０４が作成することができる。いくつかの実施形態において、前記１若しくはそれ以上のプロセスフローは、ビジュアル若しくはテキストエディタによって作成することができる。
【００１１】
プレコンパイラ１０６は、インテグレータ１０４によって作成されるプロセスアプリケーションの１若しくはそれ以上のプロセスフローを分析し、当該プロセスアプリケーションの実行に必要な最小限のコンポーネントのセットを決定する。コンパイラ１０８は前記プロセスアプリケーションをコンパイルして実行ファイルにする。結果として作成されるコンパイルされたコードは、パッケージ化され、実行可能バイナリとして（例えばダウンロード等により）展開に使用可能なものとなる。前記実行ファイルは、例えばデバイス１２２等のデバイスで実行される場合、デバイス１２２がどのように動作するかを制御する特別仕様のプロセスエンジンである。前記データベース１０９は、１若しくはそれ以上の開発者、例えば開発者１０２によって作成されたアクティビティ及びトリガーを格納する。データベース１０９は、プロセスアプリケーション開発プラットフォーム１１０の内のメモリ及び／又は格納デバイス、プロセスエンジン開発部１１０に接続されたメモリ及び／又はデバイス、又はプロセスエンジン開発部１１０とネットワーク接続を介して接続されている任意のメモリ及び／又は格納デバイスであってよい。前記ネットワーク接続としては、有線または無線接続がある。
【００１２】
プロセスアプリケーション開発プラットフォーム１１０は、開発者１０２及び／又はインテグレータ１０４によってアクセス自在である。開発者１０２は、アクティビティ及びトリガーを作成する人又はその他のエンティティ、例えばソフトウェア開発者などである。開発者１０２は、アクティビティ及びトリガー作成部１０７を用いてアクティビティ及び／又はトリガーを作成し得る。開発者により作成されるそれぞれのアクティビティ及びトリガーは、例えばＧｏ，Ｐｙｔｈｏｎ、Ｃ、Ｃ＋＋等のプログラム言語を介して作成される一定のコード機能を自己に含むものであってもよい。ｄＢ１０９、１１６に格納される前記トリガー及びアクティビティは、複数の開発者により、例えば後にプロセスフローを形成する他人によって作成されてもよく、当該開発者のそれぞれは前記トリガー及びアクティビティがどのように組み合わされることとなるのかについて認識していなくてもよい。開発者により作成される前記トリガー及びアクティビティは、インテグレータによって作成されるプロセスフローにより使用されない機能又はプロセスコンポーネントを含んでもよい。インテグレータ１０４は、エンティティ、例えばソフトウェア開発者であって、特定用途の１若しくはそれ以上のプロセスフローから成るプロセスアプリケーションをプロセス・アプリケーション・ワークスペース１０５を介して作成する者等であってもよい。例えば、インテグレータは、システム更新、特定の機能、診断テスト等を行うデバイス用のプロセスフローを作成してもよい。インテグレータは、トリガーを選択して、プロセスフローおよび当該トリガー後に起動される１若しくはそれ以上のアクティビティを初期化する。インテグレータは、第１のプロセスフローのアクティビティから分岐する第２のプロセスフローを作成してもよく、又は前記トリガーの出力に基づく第２のプロセスフローを作成してもよい。
【００１３】
リモートデータベース１１６は、他の開発者によって作成されたトリガーおよびアクティビティを格納する。例えば、リモートデータベース１１６は、例えばＧｉｔＨｕｂ（登録商標）などのオープンソースデータベースであってもよい。インテグレータ１０４は、リモートデータベース１１６に格納されたトリガー及びアクティビティをプロセスフローのために選択することができる。これら選択されたトリガー及びアクティビティは、プロセスアプリケーション開発プラットフォーム１１０に取り込まれる。
【００１４】
ネットワーク１２０は、プロセスアプリケーション開発プラットフォーム１１０とリモートデータベース１１６及びデバイス１２２とを接続する。ネットワーク１２０は、１若しくはそれ以上の以下：ローカルエリアネットワーク、有線ネットワーク、無線ネットワーク、インターネット、イントラネット、又はその他の任意の適切な通信ネットワークを有する。
【００１５】
デバイス１２２は、前記特別仕様のプロセスエンジンを実行するターゲットデバイスである。例えば、デバイス１２２は、携帯式デバイス、相互接続デバイス、ＩｏＴデバイス、又はプロセスエンジンを実行する任意のデバイスであってよい。前記プロセスアプリケーションがコンパイルされると、前記実行可能な特別仕様のプロセスエンジンはデバイス１２２に展開される。前記特別仕様のプロセスエンジンは、デバイス１２２により実行されると、当該デバイスの動作を制御する。
【００１６】
図２は、プロセス・アプリケーション・ワークスペース２００の一実施形態を示すフローチャートである。いくつかの実施形態において、プロセス・アプリケーション・ワークスペース２００は、プロセス・アプリケーション・ワークスペース１０５を用いて実装することができる。プロセスアプリケーションは、１若しくはそれ以上のプロセスフローを有し、各プロセスフローはトリガーと１若しくはそれ以上のアクティビティとを有する。アクティビティの非限定的な例示としては、カウンタアクティビティ、記録アクティビティ、休止アクティビティ、Ｃｏｎｓｔｒａｉｎｅｄ  Ａｐｐｌｉｃａｔｉｏｎ．  Ｐｒｏｔｏｃｏｌ  （ＣｏＡＰ）アクティビティ、およびハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）アクティビティが含まれる。
【００１７】
この図示される例示において、プロセスアプリケーション２００は、プロセスフローＡと、プロセスフローＢと、プロセスフローＣと、プロセスフローＤとを含む。プロセスフローＡは、トリガー２０２により開始し、さらにアクティビティ２０４と、アクティビティ２０６と、アクティビティ２０８とを含む。プロセスフローＢは、トリガー２１０と、アクティビティ２１２と、アクティビティ２１４と、アクティビティ２１６と、アクティビティ２１８とを有する。プロセスフローＣは、トリガー２２０と、アクティビティ２２２と、アクティビティ２２４とを有する。プロセスフローＤは、トリガー２２０と、アクティビティ２２２と、アクティビティ２２６と、アクティビティ２２８と、アクティビティ２３０と、アクティビティ２３２とを有する。プロセスフローは一般に、或るトリガーにより開始し、それに１若しくはそれ以上のアクティビティが続くものであり、当該１若しくはそれ以上のアクティビティは、入力として進行するトリガー及びアクティビティの出力を使用する。
【００１８】
いくつかの実施形態において、前記プロセスフローは複数の経路を含む。例えば、プロセスフローＡは、トリガー２０２と、アクティビティ２０４と、アクティビティ２０６と、アクティビティ２０８とを有する。アクティビティ２０４は、アクティビティ２０６又はアクティビティ２０８により使用される値を出力する。アクティビティ２０４の出力に応じて、アクティビティ２０６が起動され、又はアクティビティ２０８が起動される。
【００１９】
その他の実施形態では、前記プロセスフローは或るプロセスフローによっては起動されないアクティビティを含むことができる。例えば、プロセスフローＢは、トリガー２１０と、アクティビティ２１２と、アクティビティ２１４と、アクティビティ２１６と、アクティビティ２１８とを有する。アクティビティ２１２は、アクティビティ２１４に使用される値を出力してよく、アクティビティ２１４はアクティビティ２１６に使用される値を出力する。インテグレータはプロセスフローＢを作成し、当該プロセスフローにアクティビティ２１８を含む決定をしてもよい。しかしながら、インテグレータの気付かないところで、アクティビティ２１８はトリガー２１０又はアクティビティ２１２の出力でない所定の入力を実行に必要とする。このような状況では、前記プレコンパイラは、前記プロセスフローにおいて使用されないアクティビティを決定し、当該使用されないアクティビティに付随するコンポーネントがあればそれを前記プロセスフローから除去する。前記プロセスアプリケーションがその後コンパイラによってコンパイルされる時、前記特別仕様のプロセスエンジンは、より少ないメモリしか必要とせず、またより小さなフットプリントを有することとなるが、これは、当該プロセスエンジンがアクティビティ２１８に必要な任意の従属物およびコンポーネントを含まないためである。いくつかの実施形態において、トリガー及びアクティビティからの出力は続きのアクティビティを通過する。例えば、アクティビティ２１２は、アクティビティ２１４により使用されないがアクティビティ２１６に使用される値を出力してもよい。このような状況では、前記特別仕様のプロセスエンジンは、デバイスで実行される際、アクティビティ２１４の前又はこれと同時にアクティビティ２１６を実行してもよい。
【００２０】
いくつかの実施形態において、複数のプロセスフローのうちの或るプロセスフローは、前記プロセスアプリケーションによって起動されない。例えば、インテグレータはプロセスフローＣを作成する。インテグレータは、トリガー２２０と、アクティビティ２２２と、アクティビティ２２４とを追加してプロセスフローＣを作成する。また、インテグレータはトリガー２２０の出力に基づくその他の１のプロセスフローであるプロセスフローＤを作成することを決定してもよい。トリガー２２０及びアクティビティ２２２に加えて、プロセスフローＤは、アクティビティ２２６と、アクティビティ２２８と、アクティビティ２３０と、アクティビティ２３２とを含む。しかしながら、インテグレータの気付かないところで、アクティビティ２２６、２２８、２３０、及び２３２は、トリガー２２０又はアクティビティ２２２の出力でない所定の入力を必要とする。このような状況では、前記プレコンパイラは、前記プロセスフローにおいて使用されないアクティビティを検出し、当該使用されないアクティビティに付随するコンポーネントがある場合、それを前記プロセスフローから除去するものであり、かかる場合、それはプロセスフローＤを前記プロセスアプリケーションから効率的に除去するものである。前記プロセスアプリケーションが後にコンパイラによってコンパイルされる時、前記特別仕様のプロセスエンジンはより少ないメモリしか必要とせず、より小さなフットプリントを有することとなる。これは、前記特別仕様のプロセスエンジンが、プロセスフローＤに必要な従属物及びコンポーネントを含まないが、プロセスフローＣに必要な従属物及びコンポーネントを依然として含むこととなるためである。
【００２１】
図３は、特別仕様のプロセスエンジンを作成する工程の一実施形態を示すフローチャートである。いくつかの実施形態において、図３のプロセス３００は、プロセスアプリケーション開発プラットフォーム、例えばプロセスアプリケーション開発プラットフォーム１１０により実装される。
【００２２】
３０２では、アクティビティ及びトリガーのセットを受け取って、前記プロセスアプリケーションの１若しくはそれ以上のプロセスフローを作成する。前記インテグレータには、ユーザインターフェース、例えばＦｌｏｇｏ（登録商標）インターフェースなどを介して、アクティビティ及びトリガーを選択する機能が提供される。いくつかの実施形態において、インテグレータは、利用可能なアクティビティ及びトリガーのリストが提供され、当該リストから１若しくはそれ以上のアクティビティ及びトリガーを選択する。その他の実施形態では、インテグレータは、ローカルデータベースから利用可能なアクティビティ及びトリガーを検索ことができ、当該検索による検索結果から１若しくはそれ以上のアクティビティを選択する。その他の実施形態では、インテグレータは、利用可能なアクティビティ及びトリガーについてリモートデータベースを検索ことができ、１若しくはそれ以上のアクティビティ及びトリガーを当該リモートデータベースから選択する。その他の実施形態では、コマンドラインインターフェースを介してインテグレータが利用可能なアクティビティ及びトリガーの検索し、１若しくはそれ以上のアクティビティ及びトリガーを選択することができる。
【００２３】
３０４では、前記プロセスアプリケーションのための最小限のプロセス・エンジン・コンポーネントのセットが決定される。前記最小限のプロセス・エンジン・コンポーネントのセットとは、インテグレータによって前記プロセスアプリケーションのために定義された１若しくはそれ以上のプロセスフローをサポートするのに実際に必要とされる最小の数のプロセス・エンジン・コンポーネントである。アクティビティ又はトリガーは前記プロセスアプリケーションによって使用されないコンポーネントを含んでもよい。このようなコンポーネントは、特定され除去される。
【００２４】
トリガー及び／又はアクティビティは、前記プロセスアプリケーションを実行するのに必要な１若しくはそれ以上のバインディングと関連づけられていてもよい。例えば、バインディングとしては、ＨＴＴＰバインディング、ＭＱＴＴバインディング、ＷｅｂＳｏｃｋｅｔｓバインディング、ＣｏＡＰバインディング、ＦＴＬバインディング等が挙げられる。前記プロセスアプリケーションによって実際に起動される前記バインディングが特定され当該プロセスアプリケーションに加えられる。
【００２５】
３０６では、前記プロセスアプリケーションを有する前記トリガー及びアクティビティがコンパイルされて実行可能バイナリが作成される。いくつかの実施形態において、前記プロセスアプリケーションに参照されないトリガー及びアクティビティを付随するプロセス・エンジン・コンポーネントは無視され実行ファイルから除外される。前記プロセスアプリケーションに実際に起動されるバインディングが特定され前記実行ファイルに加えられる。
【００２６】
３０８では、前記特別仕様のプロセスエンジンを有する実行ファイルがデバイスに展開される。前記使用されないプロセス・エンジン・コンポーネントが実行ファイルから除去されているため、前記特別仕様のプロセスエンジンは、デバイスにより実行されると、より迅速に作動状態（ｏｎｌｉｎｅ）をもたらす。いくつかの実施形態において、前記実行ファイルは、無線接続を介して展開され前記デバイスにダウンロードされる。その他の実施形態では、前記実行ファイルは物理的メモリデバイスに展開され前記デバイスに転送される。その他の実施形態では、前記実行ファイルは有線接続を介して前記デバイスに展開される。
【００２７】
図４は、アクティビティ及びトリガーのセットを受け取る工程の一実施形態を示すフローチャートである。いくつかの実施形態において、図４のプロセスはプロセスアアプリケーション開発プラットフォーム、例えばプロセスアアプリケーション開発プラットフォーム１１０によって実行されてよい。いくつかの実施形態では、図４のプロセスは実行されて図３の工程３０２を行う。
【００２８】
４０２では、利用可能なトリガーのリストが前記プロセスアプリケーション開発プロットフォームのユーザインターフェースを介して提供される。データベース１０９及びリモートデータベース１１６等のデータベースがトリガーのセットを格納する。いくつかの実施形態において、インテグレータには、利用可能なトリガーのリストが提供される。その他の実施形態では、インテグレータは、ローカルデータベース又はリモートデータベースから利用可能なトリガーを検索することができる。その他の実施形態では、インテグレータは、コマンドラインインターフェースを介して利用可能なトリガーを検索することができる。
【００２９】
４０４では、トリガーの選択を前記プロセスアプリケーション開発プラットフォームのユーザインターフェースを介して受け取る。いくつかの実施形態において、インテグレータは前記リストからトリガーを選択することができる。その他の実施形態では、インテグレータは前記検索による検索結果から前記トリガーを選択することができる。その他の実施形態では、インテグレータは前記リモートデータベースからトリガーを選択することができる。その他の実施形態では、インテグレータは、前記トリガーを選択してプロセス・アプリケーション・ワークスペースへドラッグ&ドロップすることができる。その他の実施形態では、インテグレータは、コマンドラインインターフェースを介して入手可能なトリガーを選択することができる。
【００３０】
４０６では、前記選択されたトリガーに付随する利用可能なアクティビティのリストが前記プロセスアプリケーション開発プラットフォームのユーザインターフェースを介して提供される。データベース１０９及びリモートデータベース１１６等のデータベースがアクティビティのセットを格納する。いくつかの実施形態において、ユーザインターフェースを介して前記利用可能なアクティビティ全てが示される。その他の実施形態では、インテグレータは、ローカルデータベースから利用可能なアクティビティを検索することができ、また前記検索による検索結果から１若しくはそれ以上のアクティビティを選択することができる。その他の実施形態では、インテグレータは、利用可能なアクティビティについてリモートデータベースを検索することができ、また当該リモートデータベースから１若しくはそれ以上のアクティビティを選択することができる。その他の実施形態では、インテグレータは、コマンドラインインターフェースを介して利用可能なアクティビティを検索することができる。その他の実施形態では、前記選択されたトリガーに基づいて前記アクティビティのサブセットがインテグレータに提供される。いくつかの実施形態において、アクティビティの前記サブセットは前記プロセスアプリケーションの内容に基づいて前記アクティビティのセットからフィルター処理されていてもよい。いくつかの実施形態において、アクティビティの前記サブセットには、前記トリガーの出力を入力として使用するアクティビティが含まれる。
【００３１】
４０８では、アクティビティの選択を前記プロセスアプリケーション開発プラットフォームのユーザインターフェースを介して受け取る。いくつかの実施形態において、前記アクティビティはリストから選択される。その他の実施形態では、前記アクティビティは、プロセス・アプリケーション・ワークスペースへドラッグ&ドロップされる。その他の実施形態では、インテグレータはコマンドラインインターフェースを介して利用可能なアクティビティを選択することができる。
【００３２】
４１０では、利用可能なアクティビティのリストが提供される。いくつかの実施形態において、データベースに格納された前記アクティビティ全てが提供される。その他の実施形態では、前記アクティビティのサブセットが提供される。例えば、４０６で選択された前記アクティビティの出力を入力として使用するアクティビティのみが提供される。その他の実施形態では、利用可能なアクティビティのリストには４０６で選択された前記アクティビティを含まれない。例えば、インテグレータは、同じアクティビティの２つのインスタンスを含むプロセスフローを作成しない。
【００３３】
図５は、プロセスエンジン用の最小限のコンポーネントのセットを決定するプロセスの一実施形態を示す。いくつかの実施形態において、図５のプロセスは、プロセスアプリケーション開発プラットフォーム、例えばプロセスアプリケーション開発プラットフォーム１１０によって実行される。いくつかの実施形態において、図５のプロセスは、図３の工程３０４を行うのに使用される。
【００３４】
５０２では、前記プロセスフローのコンポーネントが決定される。いくつかの実施形態において、プロセスフローは、トリガーと、１若しくはそれ以上のアクティビティとを含む。
【００３５】
５０４では、前記プロセスフローを実行するために実際に起動される又は起動され得るプロセス・エンジン・コンポーネントが決定される。プレコンパイラ１０６のようなプレコンパイラがプロセスフローのトリガー及びアクティビティを解析し、どのトリガー及び／又はアクティビティが当該プロセスフローにより実際に使用されるのかを決定してもよい。例えば、アプリケーションＦｏｏを考えると、これにはＣｏｎｓｔｒａｉｎｅｄ  Ａｐｌｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ（ＣｏＡＰ）およびハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）アクティビティが含まれる。そのアプリケーションを起動するために、これらのＣｏＡＰ及びＨＴＴＰアクティビティにより定義され、また必要なライブラリのみを含むエンジンがカスタム構築される。その他のアクティビティと関連する任意のライブラリ、例えば、設計中に開発者が利用可能なＪＡＶＡ（登録商標）  Ｍｅｓｓａｇｅ  Ｓｅｒｖｉｃｅ（ＪＭＳ）、ＭＱＴＴ（ＭＱ  Ｔｅｌｅｍｅｔｒｙ  Ｔｒａｎｓｐｏｒｔ）等は、この特定のアプリケーションを実行するために構築された前記プロセスエンジンの一部に含まれない。その他の例では、Ｃｏｎｓｔｒａｉｎｅｄ  Ａｐｌｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ（ＣｏＡＰ）およびハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）アクティビティのサポートに関連づけられたライブラリが、このようなプロトコルでは使用されないが、このようなプロトコルに必要なコンポーネントとして同ライブラリに含まれることとなる要素を含んでもよい。
【００３６】
５０６では、ユーザによって定義されたプロセスフローに基づいて、使用されないプロセス・エンジン・コンポーネントが例えばプロセスアプリケーションに含まれることとなるプロセスコンポーネントのセットから除去され又は省かれる。トリガー又はアクティビティが実行ファイルに含まれないようにすることによって、前記トリガー又はアクティビティに付随する従属ライブラリ及びコードもまた前記実行ファイルから除外される。いくつかの実施形態において、前記使用されないコンポーネントには、ライブラリ若しくはその一部、ファンクション、又はコンポーネントが含まれる。その他の実施形態では、前記使用されないコンポーネントは或るアクティビティであってよい。その他の実施形態では、前記使用されないコンポーネントは、分岐したトリガー及びアクティビティ全体のうちの一部である。例えば、２０個のアクティビティからなり３つのプロセスフローに分かれるプロセスアプリケーションを考える。前記プロセスアプリケーションの２つのアクティビティ間における経路移行上に表現式が構築される性質ために、前記プロセスアプリケーションの一部には到達不能である。前記プレコンパイラは、前記到達不能なプロセスフローに沿ったアクティビティによりもたらされるコンポーネント及び従属物の全てを捨てることができる。
【００３７】
前述の実施形態は理解を明確にするために詳細に記載されているが、本発明は提供される詳細に限定されるものではない。 本発明を実施する多くの代替方法がある。開示された実施形態は例示であり、限定的なものではない。
【図１】
0006861733.tif 000002
【図２】
0006861733.tif 000003
【図３】
0006861733.tif 000004
【図４】
0006861733.tif 000005
【図５】
0006861733.tif 000006