(57)【要約】  プロセスフローの選択されたステップに関連付けられた１つ以上の入力が変更される。前記プロセスフローは、前記変更された１つ以上の入力に基づいて、前記選択されたステップから実行される。選択されたステップに関連付けられたデータレコードは、変更された１つ以上の入力を反映するように更新される。プロセスフローを含むプロセスアプリケーションは、実行可能ファイルにコンパイルされ、デバイスにデプロイされる。  【選択図】      図５
2019521402.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
プロセスフローの選択されたステップに関連付けられた１つ以上の入力データ値を変更する工程と、
前記変更された１つ以上の入力を使用して、前記選択されたステップから前記プロセスフローを実行する工程と、
選択されたステップに関連付けられたデータレコードを更新して、前記変更された１つ以上の入力を反映する工程と、を行うように構成されたプロセッサと、
前記プロセッサに結合され、前記プロセッサに指令を提供するように構成されたメモリとを含む、システム。
【請求項２】
請求項１記載のシステムにおいて、前記プロセッサは、前記プロセスフローを記述するフロー定義および前記プロセスフローの各ステップにおける前記プロセスフローの状態を記述する状態情報を受け取る工程を行うように構成されるものである、システム。
【請求項３】
請求項２記載のシステムにおいて、前記フロー定義がｆｌｏｗ．ｊｓｏｎファイルである、システム。
【請求項４】
請求項２記載のシステムにおいて、前記プロセッサは、前記フロー定義および前記状態情報に基づいてプロセスアプリケーションを再構成する工程を行うように構成され、前記プロセスアプリケーションは前記プロセスフローを含むものである、システム。
【請求項５】
請求項２記載のシステムにおいて、前記プロセッサはさらに、前記プロセスアプリケーションを実行可能ファイルにコンパイルする工程を行うように構成される、システム。
【請求項６】
請求項５記載のシステムにおいて、前記プロセッサはさらに、前記コンパイルされた実行可能ファイルを前記状態情報を生成したデバイスにデプロイする工程を行うように構成される、システム。
【請求項７】
請求項２記載のシステムにおいて、前記状態情報は、前記状態情報を生成したデバイス及び前記システムとは別のデータベースに格納されるものである、システム。
【請求項８】
請求項２記載のシステムにおいて、前記フロー定義は、前記状態情報を生成した前記デバイス、前記状態情報を格納するデータベース、及び前記システムとは別のデータベースに格納されるものである、システム。
【請求項９】
請求項２記載のシステムにおいて、前記状態情報を生成したデバイスは、前記状態サービスを格納するデータベースに状態値をアップロードするものである、システム。
【請求項１０】
請求項９記載のシステムにおいて、前記状態値は、状態遷移の発生時にアップロードされるものである、システム。
【請求項１１】
請求項９記載のシステムにおいて、
前記状態情報を生成した前記デバイスから前記状態情報を格納する前記データベースに前記状態値が定期的にアップロードされるものである、システム。
【請求項１２】
請求項９記載のシステムにおいて、
前記状態情報を生成したデバイスと前記状態情報を格納する前記データベースとの間のネットワーク接続に障害が生じた場合、再接続時に前記状態情報が前記データベースにアップロードされるものである、システム。
【請求項１３】
請求項１記載のシステムにおいて、前記プロセッサは、前記プロセスフローを含むプロセスアプリケーションを実行するために必要なプロセスエンジンコンポーネントの最小セットを決定する工程を行うように構成されている、システム。
【請求項１４】
方法であって、
プロセスフローの選択されたステップに関連付けられた１つ以上の入力データ値を修正して出力状態を生成する工程と、
前記変更された１つ以上の入力を使用して、前記選択されたステップから前記プロセスフローを実行する工程と、
選択されたステップに関連付けられたデータレコードを更新して、前記変更された１つ以上の入力を反映させる工程と、を有する方法。
【請求項１５】
請求項１４記載の方法は、前記プロセスフローを記述するフロー定義および前記プロセスフローの各ステップにおける前記プロセスフローの状態を記述する状態情報を受け取る工程をさらに含むものである。
【請求項１６】
請求項１５記載の方法において、前記フロー定義および前記状態情報に基づいてプロセスアプリケーションを再構成する工程をさらに有し、前記プロセスアプリケーションは前記プロセスフローを含むものである。
【請求項１７】
請求項１６記載の方法は、前記プロセスアプリケーションを実行可能ファイルにコンパイルする工程をさらに有するものである。
【請求項１８】
請求項１７記載の方法は、前記コンパイルされた実行可能ファイルを前記状態情報を生成したデバイスにデプロイする工程をさらに有するものである。
【請求項１９】
有形の非一時的なコンピュータ可読記憶媒体に具体化され、コンピュータ指令を有するコンピュータプログラム製品であって、前記コンピュータ指令は、
プロセスフローの選択されたステップに関連付けられた１つ以上の入力を変更する工程と、
前記変更された１つ以上の入力を基に、前記選択されたステップから前記プロセスフローを実行する工程と、
選択されたステップに関連付けられたデータレコードを更新して、前記変更された１つ以上の入力を反映させる工程と、を含むものである、コンピュータプログラム製品。
【請求項２０】
請求項１９記載のコンピュータプログラム製品は、前記プロセスフローを記述するフロー定義および前記プロセスフローの各ステップにおける前記プロセスフローの状態を記述する状態情報を受け取る工程をさらに有するものである。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、すべての目的のために参照により本明細書に組み込まれる、２０１６年５月１６日付出願の米国仮特許出願第６２／３３７，１５６号、発明の名称「ＳＴＥＰＢＡＣＫ  ＭＥＣＨＡＮＩＳＭ  ＴＯ  ＤＥＶＥＬＯＰ  ＡＮＤ  ＤＩＡＧＮＯＳＥ  ＰＲＯＣＥＳＳ  ＡＰＰＬＩＣＡＴＩＯＮＳ」に対する優先権を主張する。
【背景技術】
【０００２】
プロセスアプリケーションを実行するプロセスエンジンを、デバイスにデプロイすることができる。プロセスアプリケーションは特定の方法で動作するように設計されているが、何らかの未知の理由によりプロセスアプリケーションが期待どおりに動作しないことがある。可能な解決策の１つは、単に装置を交換することであるが、このような解決策は実用的でないか、またはコスト高になり、またプロセスアプリケーションに関する根本的な問題を解決しない。
【図面の簡単な説明】
【０００３】
本発明の様々な実施形態が、以下の詳細な説明および添付図面に開示される。
【図１】図１は、ステップバック機構を使用してプロセスアプリケーションを開発および診断するためのシステムの実施形態を示すブロック図である。
【図２Ａ】図２Ａは、プロセスアプリケーション開発プラットフォームの一実施形態を示すブロック図である。
【図２Ｂ】図２Ｂは、プロセスアプリケーション診断プラットフォームの一実施形態を示すブロック図である。
【図３】図３は、プロセスアプリケーションの一実施形態を示すフローチャートである。
【図４】図４は、デバイス上で動作するプロセスエンジンによって実行されるプロセスアプリケーションに関連付けられた状態情報を報告するためのプロセスの実施形態を示すフローチャートである。
【図５】図５は、プロセスアプリケーションを診断するためのプロセスの一実施形態を示すフローチャートである。
【図６】図６は、プロセスアプリケーションを開発するためのプロセスの一実施形態を示すフローチャートである。
【図７】図７は、プロセスアプリケーションを修正するためのプロセスの一実施形態を示すフロー
【図８】図８は、プロセスを配備するためのプロセスの一実施形態を示すフローチャートである。
【発明を実施するための形態】
【０００４】
本発明は、さまざまな形式で実施可能であるが、プロセス、装置、システム、組成物、コンピュータ可読記憶媒体上に具現化されたコンピュータプログラム製品、および／またはプロセッサ（プロセッサーに結合されたメモリに記憶された命令を実行するように構成されたプロセッサ等）が含まれる。本明細書では、これらの実装形態、または本発明がとり得る他の形態は、技術と呼ぶことができる。一般に、開示されたプロセスのステップの順序は、本発明の範囲内で変更されてもよい。別段の記載がない限り、プロセッサまたはメモリなどのタスクを実行するように構成されたものとして記載されているコンポーネントは、所与の時間にタスクを実行するように一時的に構成された一般的なコンポーネント、またはそのタスクを行うために製造された特定のコンポーネントによって実行される。本明細書で使用する「プロセッサ」という用語は、コンピュータプログラム命令などのデータを処理するように構成された１つ以上のデバイス、回路、および／または処理コアを指す。
【０００５】
本発明の１つ以上の実施形態の詳細を、以下に本発明の原理を説明する添付の図面と共に説明する。本発明はそのような実施形態に関連して説明されるが、本発明はいずれの実施形態にも限定されるものではない。本発明の範囲は、特許請求の範囲によってのみ限定され、本発明は、多数の代替、変形および等価物を含むものである。本発明の完全な理解を提供するために、多くの具体的な詳細が以下の説明に記載されている。これらの詳細は、例示のために提供されており、本発明は、これらの特定の詳細の一部または全部を伴わずに、請求項に従って実施することができる。明瞭化のために、本発明に関連する技術分野において周知の技術内容は、本発明が不必要に不明瞭にならないように詳細には記載していない。
【０００６】
プロセスアプリケーションを開発し診断するためのステップバック機構が開示されている。いくつかの実施形態では、デバイス上で動作するプロセスエンジンの例では、プロセスアプリケーションを実行するように構成されているが、予期しない誤った挙動が起こる。プロセスアプリケーションは、１つ以上のプロセスフローを含む。各プロセスフローは一連のステップで構成されるが、たとえば、１つ以上のアクティビティの後に、メッセージを記録するアクティビティなどである。プロセスフローのステップの実行中に変更されたデータ値、すなわち状態遷移が記録され、ローカルに格納される。その後、変更されたデータ値が送信され、遠隔状態情報データベースに格納される。プロセスアプリケーションの定義およびプロセスエンジンのインスタンスに関連する記録された状態値は、プロセスアプリケーション診断プラットフォームによって得られる。プロセスアプリケーション診断プラットフォームは、ステップバック機構を含み、関連付けられた状態値で前記デバイス上で実行されたプロセスエンジンを再生成するように構成される。ステップバック機構は、オペレータがプロセスアプリケーションに関連する１つ以上のプロセスフローのステップをバックトラックすることを可能にする。オペレータは、プロセスフローの各ステップで記録された状態を検査するだけでなく、任意のステップで関連付けられた任意のデータ値を調整し、プロセスアプリケーションを始めから実行することなくプロセスフローの後続ステップへの調整データ値の影響を判定できます。
【０００７】
オペレータは、所望の結果を達成するためにプロセスフローに対する１つ以上の調整を行うことができる。オペレータがプロセスフローに所望の結果を達成させるようにプロセスフローを調整した場合、プロセスアプリケーションを更新して調整を反映させることができる。その後、プロセスアプリケーションを再度コンパイルしてデバイスに再デプロイすることができます。これにより、装置を完全に交換することは高費用、または実用的でない場合があるが、完全に交換しなくても誤動作した装置を修理することができる。
【０００８】
他の実施形態では、プロセスアプリケーションを実行するプロセスエンジンは、プロセスアプリケーション開発プラットフォームを使用して開発することができる。プロセスアプリケーション開発プラットフォームは、開発者がプロセスアプリケーションを作成できるように構成され、開発者がプロセスフローの任意のステップに対する１つ以上の調整を行い、プロセスアプリケーションを最初から再実行しなくても、１つ以上の調整の後続のステップへの影響を決定することを可能にするステップバックメカニズムを含む。プロセスフローが所望の結果を達成するように開発者がプロセスフローを調整した場合、プロセスアプリケーションを保存して調整を反映させることができる。プロセスアプリケーションをプリコンパイルして、プロセスアプリケーションを実行するために必要な最小限のコンポーネントセットを決定し、不要なコンポーネントを削除することが可能である。その後、プロセスアプリケーションを実行可能ファイルにコンパイルし、デバイスにデプロイすることができる。
【０００９】
図１は、ステップバック機構を使用してプロセスアプリケーションを開発および診断するためのシステムの実施形態を示すブロック図である。図示の例では、システム１００は、プロセスアプリケーション開発プラットフォーム１１０、プロセスアプリケーション診断プラットフォーム１１２、フロー定義データベース１１４、状態情報データベース１１６、デバイス１１８、およびネットワーク１２０を含む。
【００１０】
プロセスアプリケーション開発プラットフォーム１１０は、インテグレータ１０４がプロセスアプリケーションを呼び出すカスタムプロセスエンジンを作成することを可能にするプラットフォームである。インテグレータ１０４は、特定の目的のための１つ以上のプロセスフローからなるプロセスアプリケーションをプロセスアプリケーション開発プラットフォーム１１０を介して作成する、ソフトウェア開発者などのエンティティであってもよい。
【００１１】
例えば、インテグレータは、装置がシステム更新を実行する、特定の機能を実行する、診断テストを実行する等ために、プロセスフローを作成することができる。各プロセスフローは、メッセージを記録するアクティビティの後に１つ以上のアクティビティが続くなど、一連のステップからなる。
【００１２】
インテグレータは、プロセスフローを開始するトリガ、またトリガ後に呼び出される１つ以上のアクティビティを選択することができる。インテグレータは、第１のプロセスフローのアクティビティから分岐する第２のプロセスフロー、またはトリガーの出力に基づく第２のプロセスフローを作成することができる第２のプロセスフローを作成できる。トリガーおよびアクティビティは、ライブラリ、コンポーネント、および／または関数への参照を含むコードの個々のセットによって定義されてもよい。
【００１３】
開発者１０２は、プロセスアプリケーション開発プラットフォーム１１０を介してアクティビティおよびトリガを作成する個人または他のエンティティ（例えば、ソフトウェア開発者）であってもよい。開発者１０２は、アクティビティおよびトリガクリエータを使用してアクティビティおよび／またはトリガを作成することができる。開発者によって作成された各アクティビティおよびトリガは、Ｇｏ、Ｐｙｔｈｏｎ、Ｃ、Ｃ＋＋などのプログラミング言語を介して作成される自己完結型のコード機能であってもよい。トリガおよびアクティビティは、複数の開発者によって作成されてもよく、プロセスフローを形成するためにトリガーおよびアクティビティがどのようにして後で他の人によって組み合わされるかを開発者のそれぞれが認識しない。
【００１４】
オペレータ１０６は、プロセスアプリケーションを診断する人または他のエンティティ（例えば、ソフトウェア開発者）であってもよい。オペレータ１０６は、フロー定義データベース１１４から検索するファイルと、状態情報データベース１１６から検索するプロセスエンジンに関連付けられた関連する記録済み状態遷移とを選択することによって、プロセスエンジンが故障したインスタンスを復活させることができる。いくつかの実施形態において、前記ファイルは、ｆｌｏｗ．ｊｓｏｎファイル、ＸＭＬファイル、またはフロー定義を格納するその他のファイルが可能である。プロセスエンジンに関連付けられた関連する記録済み状態遷移は、プロセスエンジンが故障したインスタンスを実行したデバイスに固有の識別子を介して識別することができる。オペレータ１０６は、任意のステップでプロセスアプリケーションに関連する状態値をユーザインターフェースを介して修正し、プロセスアプリケーションの開始からプロセスアプリケーションを実行する必要なく、修正された状態が後続のステップに及ぼす影響を見ることができる。オペレータ１０６は、元の状態値の代わりに修正された状態値を出力するようにステップが構成されるように、プロセスアプリケーションを更新することができる。
【００１５】
プロセスアプリケーション診断プラットフォーム１１２は、オペレータ１０６がデバイスに関連付けられたフロー定義ファイルをフロー定義データベース１１４から、また前記デバイスに関連付けられた関連する記録済み状態遷移を状態情報データベース１１６から、検索することを可能にするプラットフォームである。特定のフロー定義は１つ以上のデバイスに関連付ける方法で格納可能である。フロー定義ファイルは、プロセスアプリケーションに関連する期待される動作のメタデータ記述である。いくつかの実施形態では、フロー定義は、プロセスアプリケーションのトリガとアクティビティとの関係、およびトリガおよびアクティビティの実行方法を記述する。いくつかの実施形態では、フロー定義は、プロセスアプリケーションのアクティビティとプロセスアプリケーションの動作との間の関係を記述する。いくつかの実施形態では、フロー定義ファイルは、ｆｌｏｗ．ｊｓｏｎファイル、ａｐｐ．ｊｓｏｎファイル、ＸＭＬファイル、またはフロー定義を格納する他のファイルであってもよい。関連する記録済み状態遷移は、プロセスアプリケーションの各ステップにおいて、プロセスアプリケーションのトリガおよびアクティビティに関連付けられた値を記述する。プロセスエンジンに関連付けられた関連する記録済み状態遷移は、プロセスエンジンが故障したインスタンスを実行したデバイスに固有の固有の識別子を介して識別することができる。プロセスアプリケーション診断プラットフォーム１１２は、フロー定義ファイルと関連する記録済み状態遷移との組み合わせを使用して、デバイス１１８などのデバイスにデプロイされたプロセスエンジンを再作成するように構成される。プロセスアプリケーション診断プラットフォーム１１２は、プロセスアプリケーションの任意のステップからプレセスアプリケーションを再生成するように構成されている。プロセスアプリケーション診断プラットフォーム１１２は、プロセスアプリケーションの任意のステップに関連付けられたデータ値を調整する指示を受け取り、前記データ値を調整するように構成される。プロセスアプリケーション診断プラットフォーム１１２は、選択されたステップから、ステップの検索されたデータ値の代わりに調整されたデータ値を有するプロセスアプリケーションを再生するように構成される。いくつかの実施形態では、プロセスアプリケーション診断プラットフォーム１１２は、プロセスアプリケーションを故障前のステップに再生するように構成される。
【００１６】
いくつかの実施形態では、プロセスアプリケーション開発プラットフォーム１１０およびプロセスアプリケーション診断プラットフォーム１１２を、開発者１０２、インテグレータ１０４、および／またはオペレータ１０６がアクセス可能な単一のプロセスアプリケーション開発および診断プラットフォームに結合することができる。
【００１７】
フロー定義データベース１１４は、プロセスアプリケーションの動作を記述するファイルを格納するデータベースである。いくつかの実施形態では、フロー定義データベース１１４は、プロセスアプリケーションのトリガ、プロセスアプリケーションのアクティビティ、プロセスアプリケーション内のトリガとアクティビティとの間の関係、および／またはプロセス内のアクティビティ間の関係を記述するフロー定義ファイルを格納する。いくつかの実施形態では、ネットワーク１２０を介してアクセス可能なフロー定義データベース１１４のインスタンスが多数存在する。いくつかの実施形態では、フロー定義ファイルは、ｆｌｏｗ．ｊｓｏｎファイル、ａｐｐ．ｊｓｏｎファイル、ＸＭＬファイル、またはその他のフロー定義を格納するファイルが可能である。
【００１８】
状態情報データベース１１６は、デバイス１１８などのデバイス上で実行されているプロセスエンジンに関連付けられた状態を格納するデータベースである。いくつかの実施形態では、各ステップにおけるプロセスアプリケーションのすべての状態値が状態情報データベース１１６に格納される。いくつかの実施形態では、プロセスアプリケーションのステップ中に変更される状態値が状態サービスデータベース１１６に格納される。いくつかの実施形態では、各プロセスアプリケーションステップの完了時に状態値が格納される。いくつかの実施形態では、状態値は、各プロセスアプリケーションのステップの開始時に格納される。
【００１９】
デバイス１１８は、プロセスエンジンを実行するターゲットデバイスである。例えば、デバイス１１８は、モバイルデバイス、相互接続デバイス、ＩｏＴデバイス、汎用コンピュータ、またはプロセスエンジンを実行する任意のデバイスであってもよい。プロセスアプリケーションがコンパイルされた後、実行可能なプロセスエンジンをデバイス１１８にデプロイすることができる。プロセスエンジンは、一般的なプロセスエンジンまたはカスタムプロセスエンジンとすることができる。プロセスエンジンは、デバイス１１８によって実行されると、デバイスの挙動を制御する。いくつかの実施形態では、デバイス１１８は、プロセスアプリケーションの各ステップが完了した後のすべての状態値を記憶する。いくつかの実施形態では、デバイス１１８は、プロセスアプリケーションの各ステップが完了した後の状態遷移を格納する。いくつかの実施形態では、デバイス１１８は、プロセスアプリケーションの各ステップが完了した後に、状態情報データベース１１６に状態遷移を送信する。他の実施形態では、デバイス１１８は、状態情報データベース１１６に状態遷移を周期的に送信する。他の実施形態では、デバイス１１８は、要求に応じて状態情報データベース１１６に状態遷移を送信する。いくつかの実施形態では、デバイス１１８がネットワーク１２０への接続性を失ったとき、デバイス１１８は、ネットワーク１２０への接続を再確立するときに状態情報データベース１１６に状態遷移を送信する。
【００２０】
ネットワーク１２０は、プロセスアプリケーション開発プラットフォーム、プロセスアプリケーション診断プラットフォーム１１２、フローサービスデータベース１１４、状態サービスデータベース１１６、およびデバイス１１８と相互接続する。ネットワーク１２０は、ローカルエリアネットワーク、有線ネットワーク、無線ネットワーク、インターネット、イントラネット、または任意の他の適切な通信ネットワークのうちの１つ以上を備える。
【００２１】
図２Ａは、プロセスアプリケーション開発プラットフォームの一実施形態を示すブロック図である。いくつかの実施形態では、プロセスアプリケーション開発プラットフォーム１１０を使用して、プロセスアプリケーション開発プラットフォーム２１０を実装することができる。
【００２２】
プロセスアプリケーション開発プラットフォーム２１０は、プロセスアプリケーションワークスペース２０５、プリコンパイラ２０６、アクティビティおよびトリガクリエータ２０７、コンパイラ２０８、および／またはデータベース２０９を含むことができる。プロセスアプリケーション開発プラットフォーム２１０は、１つ以上のコンピュータデバイスを使用して実施可能であり、コンピュータ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、クラウドベースのシステム、専用装置、上述のシステムまたは装置のいずれかを含む分散コンピューティング環境、または１つ以上のプロセッサー、前記プロセッサーに接続された、プロセッサーに指令を提供するように構成されたメモリーを含むハードウェア／ソフトウェア／ファームウェアの他の適切な組み合わせ等を含む。
【００２３】
プロセスアプリケーションワークスペース２０５は、インテグレータ１０４などのインテグレータがプロセスアプリケーションに含めるべき１つ以上のプロセスフローを作成することを可能にするユーザインタフェースである。いくつかの実施形態では、１つ以上のプロセスフローは、ビジュアルエディタまたはテキストエディタによって作成することができる。プロセスフローには、１つ以上のアクティビティが続くトリガが含まれる。他の実施形態では、プロセスフローは、１つ以上のアクティビティから構成される。このようなプロセスフローは、プロセスフロー定義の一部ではないトリガに関連付けることができる。プロセスフローが実行されるとき、プロセスフローは１つ以上のステップから構成される。プロセスフローの各ステップでは、各トリガーと１つ以上のアクティビティーには関連した状態がある。プロセスアプリケーションワークスペース２０５は、インテグレータがプロセスフローの任意のステップで任意のトリガおよび／または任意のアクティビティに関連付けられた１つ以上のデータ値を修正し、修正されたデータに基づいて残りのステップを実行することを可能にするステップバック機構を含む。プロセスアプリケーションワークスペース２０５は、ユーザがトリガおよび／またはアクティビティに関連付けられたデータレコードを修正および格納することを可能にするように構成される。データレコードは、トリガーおよび／またはアクティビティによって使用されるデータ値を含む。
【００２４】
プリコンパイラ２０６は、インテグレータによって作成されたプロセスアプリケーションの１つ以上のプロセスフローを分析し、プロセスアプリケーションを実行するために必要な最小限のコンポーネントセットを決定するように構成されている。コンパイラ２０８は、プロセスアプリケーションを実行可能ファイルにコンパイルするように構成される。得られたコンパイルされたコードはパッケージ化され、実行可能なバイナリとして（例えば、ダウンロードによって）デプロイされるように利用可能にされる。実行可能ファイルは、デバイス１１８などのデバイス上で実行されると、デバイス１１８がどのように動作するかを制御するプロセスエンジンである。データベース２０９は、開発者１０２などの１人または複数の開発者によって作成されたアクティビティおよびトリガを格納するように構成される。データベース２０９は、アプリケーション開発プラットフォーム２１０の内部のメモリおよび／または記憶装置、アプリケーション開発プラットフォーム２１０に付属したメモリおよび／または記憶装置、プロセスアプリケーション開発プラットフォーム２１０にネットワーク接続を介して接続された任意のメモリおよび／またはストレージデバイス、またはそれらの任意の組み合わせが可能である。ネットワーク接続は、有線または無線接続であってもよい。
【００２５】
図２Ｂは、プロセスアプリケーション診断プラットフォームの一実施形態を示すブロック図である。いくつかの実施形態では、処理アプリケーション診断プラットフォーム２１２は、処理アプリケーション診断プラットフォーム１１２を使用して実装することができる。
【００２６】
プロセスアプリケーション診断プラットフォーム２１２は、プロセスアプリケーション診断ワークスペース２１５、プリコンパイラ２１６、コンパイラ２１８、および／またはデータベース２１９を含むことができる。プロセスアプリケーション診断プラットフォーム２１０は、１つ以上のコンピューティングデバイスを使って実装可能であり、これにはコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、クラウドベースのシステム、専用装置、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境、または他の適切なハードウェア／ソフトウェア／ファームウェアの組み合わせであって１つ以上のプロセッサと、プロセッサに結合され、プロセッサに命令を提供するように構成されたメモリとを含むもの等が含まれる。
【００２７】
プロセスアプリケーション診断ワークスペース２１５は、オペレータ１０６などのオペレータが、フロー定義データベースからデバイスにデプロイされたプロセスアプリケーションに関連付けられた１つ以上のプロセスフローを検索し、それに関連する１つ以上の状態値を状態情報データベースから検索することを可能にするユーザインタフェースである。前記検索されたプロセスフローは、デバイス上で実行されたものである。プロセスアプリケーション診断ワークスペース２１５は、ステップバック機構を含み、プロセスフローの特定のステップでプロセスフローに関連付けられた１つ以上のデータ値を変更する１つ以上の入力を受け取るように構成される。プロセスアプリケーション診断ワークスペース２１５は、前記修正された値で特定のステップからのプロセスフローを実行するようにさらに構成される。
【００２８】
プロセスアプリケーション診断ワークスペース２１５は、格納された状態値の代わりに修正された状態値を出力するようにプロセスアプリケーションを更新するようにさらに構成される。プロセスアプリケーション診断ワークスペース２１５はさらに、更新されたプロセスアプリケーションをデータベース２１９またはリモートフロー定義データベースに格納するように構成される。更新されたプロセスアプリケーションは、所望の出力を生成するためにトリガおよび／またはアクティビティによって使用される１つ以上の変更されたデータ値を含むデータレコードを含む。
【００２９】
プリコンパイラ２１６は、プロセスアプリケーションの１つ以上のプロセスフローを分析し、プロセスアプリケーションを実行するために必要なコンポーネントの最小セットを決定するように構成されている。コンパイラ２１８は、プロセスアプリケーションを実行可能ファイルにコンパイルするように構成される。得られたコンパイルされたコードはパッケージ化され、実行可能なバイナリとして（例えば、ダウンロードなどによって）再配置されるように利用可能にされる。実行可能ファイルは、デバイス１１８のようなデバイス上で実行されると、デバイスがどのように動作するかを制御するプロセスエンジンである。データベース２１９は、オペレータ１０６などの１つ以上のオペレータによって変更されたアクティビティおよびトリガを格納する。データベース２１９は、プロセスアプリケーション開発プラットフォーム２１２内のメモリおよび／またはストレージデバイス、プロセスアプリケーション開発プラットフォームに取り付けられたメモリおよび／  またはデバイス、またはネットワーク接続を介してプロセスアプリケーション開発プラットフォーム２１２に接続された任意のメモリおよび／または記憶装置、または上記の任意の組み合わせを含む。ネットワーク接続は、有線または無線接続であってもよい。いくつかの実施形態では、変更されたプロセスアプリケーション定義は、フロー定義データベース１１４などのリモートデータベースに送信される。
【００３０】
図３は、プロセスアプリケーションの一実施形態を示すフローチャートである。いくつかの実施形態では、プロセスアプリケーション開発ワークスペース２０５などのプロセスアプリケーション開発ワークスペースを使用してプロセスアプリケーション３００を開発することができる。他の実施形態では、プロセスアプリケーション診断ワークスペース２１５などのプロセスアプリケーション診断ワークスペースを使用してプロセスアプリケーション３００を診断することができる。
【００３１】
プロセスアプリケーションは、１つ以上のプロセスフローから構成される。いくつかの実施形態では、プロセスフローは、トリガおよび１つ以上のアクティビティから構成される。いくつかの実施形態では、１つ以上のアクティビティから構成され、プロセスフロー定義の一部ではないトリガに関連付けられる。アクティビティの非限定的な例には、カウンタアクティビティ、ログアクティビティ、リセットアクティビティ、制約付きアプリケーションプロトコル（ＣｏＡＰ）アクティビティ、およびハイパーテキスト転送プロトコル（ＨＴＴＰ）アクティビティが含まれる。
プロセスアプリケーションを呼び出すデプロイされたプロセスエンジンは、誤った結果を生成する可能性がある。例えば、プロセスフローのアクティビティは、第三者のソフトウェアからの出力を入力として使用することができる。第三者ソフトウェアは、第三者ソフトウェアが異なる値、すなわちアクティビティに対する異なる入力値を出力するように更新される可能性がある。その結果、アクティビティは、アクティビティが出力すると予想される状態値とは異なる状態値を出力する。
【００３２】
図示の例では、プロセスアプリケーション３００は、プロセスフローＡおよびプロセスフローＢを含む。プロセスフローＡは、トリガ３０２で始まり、アクティビティ３０４、アクティビティ３０６、およびアクティビティ３０８が後続する一連のステップからなる。プロセスフローＢは、トリガ３１０で始まり、アクティビティ３１２、アクティビティ３１４、およびアクティビティ３１６が後続する一連のステップから構成される。プロセスフローは一般にトリガで始まり、先行するトリガーとアクティビティーの出力を入力として使用する１つ以上のアクティビティが後続する。
【００３３】
プロセスフローＡは、逐次プロセスフローの一例である。プロセスフローＡは、プロセスアプリケーション開発プラットフォームで開発することができる。プロセスフローＡは、デバイスにデプロイされたプロセスエンジンに関連付けられた検索されたフロー定義と、デバイス上で実行されるプロセスエンジンのインスタンスに関連付けられた検索された状態情報に基づいて、プロセスアプリケーション診断ワークスペースによって再生成することもできる。プロセスフローの第１ステップにおいて、トリガ３０２は、アクティビティ３０４に入力される状態値を出力することができる。プロセスフローの第２ステップにおいて、アクティビティ３０４は、アクティビティ３０６に入力される状態値を出力することができる。プロセスフローの第３ステップにおいて、アクティビティ３０６は、アクティビティ３０４の出力に基づいて状態値を出力することができる。プロセスフローの第４のステップにおいて、アクティビティ３０８は、アクティビティ３０６の出力に基づいて状態値を出力することができる。各アクティビティは、先行するアクティビティまたはトリガの出力に加えて、１つ以上の入力データ値に基づいた状態値を出力することが可能である。例えば、アクティビティ３０４によって出力される状態値は、トリガ３０２の出力および１つ以上の追加入力データ値に基づくことができる。１つ以上の追加の入力データ値は、アクティビティ３０４によって出力された状態値を調整するように調整することができる。
【００３４】
アクティビティに関連付けられた１つ以上の追加入力データ値は、プロセスアプリケーション開発ワークスペースで調整することができる。例えば、アクティビティ３０６が特定の状態を出力することが望ましいかもしれないが、何らかの理由でアクティビティ３０６が所望の状態を出力しない。いくつかの実施形態では、アクティビティ３０４は、アクティビティ３０４に関連する状態値が、アクティビティ３０６に所望の状態とは異なる値を出力させるため、所望の状態を出力しないことがある。プロセスアプリケーション開発ワークスペースは、アクティビティ３０４に関連付けられた１つ以上の入力データ値を調整する入力を受け取り、１つ以上の調整された入力データ値でプロセスフローを第２ステップからシミュレートするように構成される。例えば、ステップ２において、アクティビティ３０４は、「Ｘ」の状態を出力するように構成される。ステップ３において、アクティビティ３０６は「Ｘ」の状態を受け取り、「Ａ」の状態を出力する。ステップ４において、アクティビティ３０８は「Ａ」の状態を受け取り、「Ｂ」の状態を出力する。アクティビティ３０４に関連付けられた１つ以上の入力データ値は、アクティビティ３０４が「Ｙ」の状態を出力するように構成されるようにアクティビティ３０４を調整することができる。ステップ３では、アクティビティ３０６は「Ｙ」の状態を受け取り、「Ｃ」の状態を出力する。ステップ４では、アクティビティ３０８が「Ｃ」の状態を受け取り、「Ｄ」の状態を出力する。プロセスアプリケーション開発ワークスペースは、インテグレータが、ステップ１からプロセスフローを開始することなく、アクティビティ３０４の状態を調整した場合の影響を判定することを可能にする。これにより、選択したステップの前にあるステップを実行するためにシステム資源を使用する必要がなくなるので、プロセスアプリケーションが故障したインスタンスを診断するために必要な時間が短縮される。いくつかの例では、プロセスアプリケーションは数百のステップから構成されるので、最初からプロセスアプリケーションを実行すると、選択されたステップ、例えばプロセスアプリケーションの途中、あるいは最後の方からプロセスアプリケーションを実行した時よりも多くの計算資源を必要とする。プロセスアプリケーション開発プラットフォームはまた、プロセスフローの変更されたバージョンを保存するように構成されている。
【００３５】
プロセスフローＢは、複数の経路を有するプロセスフローの一例である。プロセスフローＢは、プロセスアプリケーション開発プラットフォームで開発することができる。プロセスフローＢは、プロセスアプリケーション診断ワークスペースによって、デバイスにデプロイされたプロセスエンジンに関連付けられた検索されたフロー定義と、前記デバイスで実行されたプロセスエンジンのインスタンスに関連付けられた、検索された状態情報に基づいて再生成可能であり、オペレータがトリガまたはアクティビティに関連付けられた１つ以上の入力変数を調整して、関連するトリガまたはアクティビティが所望の状態を生成するようにさせることを可能にする。
【００３６】
図示の例では、ステップ２において、アクティビティ３１２は、ステップ３においてアクティビティ３１４に状態値を出力させる状態を出力するが、ステップ３においてアクティビティ３１６には状態値を出力させない状態を出力することができる。アクティビティ３１２は、元々、アクティビティ３１６に状態値を出力させる状態値を出力するようにプログラムされたものであってもよい。アクティビティ３１２に関連付けられた１つ以上の入力データ値は、アクティビティ３１６に状態値を出力させるように調整することができる。プロセスアプリケーション診断ワークスペースは、オペレータがステップ１からのプロセスフローを開始する必要なく、アクティビティ状態３１２の調整の影響を判定することを可能にする。これにより、選択したステップの前にあるステップを実行するためにシステム資源を使用する必要がないため、プロセスアプリケーションが故障したインスタンスを診断するために必要な時間が短縮される。示されている例では、変更された入力でステップ２からプロセスフローを開始することができる。
【００３７】
プロセスフローＣは、トリガのないプロセスフローの一例である。プロセスフローＣは、アクティビティ３２０，３２２、および３２４から構成される。プロセスフローＣは、トリガ（図示せず）に関連付けることができるが、トリガはプロセスフローＣの定義の一部ではない。プロセスフローＣは、プロセスフローＡに類似するが、トリガはプロセスフローＣの定義の一部ではない。
【００３８】
図４は、デバイス上で動作するプロセスエンジンによって実行されるプロセスアプリケーションに関連する状態情報を報告するためのプロセスの実施形態を示すフローチャートである。いくつかの実施形態では、図４のプロセス４００は、デバイス１１８のような装置によって実施することができる。
【００３９】
４０２において、実行可能バイナリが受信される。実行可能バイナリは、デバイス上で実行されると、デバイスの動作を制御するプロセスエンジンである。プロセスエンジンは、プロセスアプリケーションで構成される。
【００４０】
４０４において、プロセスアプリケーションのインスタンスがデバイス上で実行される。プロセスアプリケーションの各ステップの後、各ステップに関連付けられた状態情報がデバイスに記憶される。
【００４１】
４０６において、状態情報がリモートサービスデータベースに報告される。状態情報は、デバイスに関連付けられた識別子と、関連する状態情報が変更されたときのタイムスタンプとを含む。いくつかの実施形態では、デバイスは、プロセスアプリケーションの各ステップが完了した後の状態遷移を格納する。いくつかの実施形態では、デバイスは、プロセスアプリケーションの各ステップが完了した後に、状態情報データベースに状態遷移を送信する。他の実施形態では、デバイスは、状態遷移を状態情報データベースに周期的に送信する。他の実施形態では、デバイスは、要求に応じて状態情報データベースに状態遷移を送信する。いくつかの実施形態では、デバイスがネットワークへの接続を失った際、デバイスは、ネットワークへの接続を再確立すると、状態情報データベースに状態遷移を送信する。
【００４２】
図５は、プロセスアプリケーションを診断するためのプロセスの一実施形態を示すフローチャートである。いくつかの実施形態では、図５のプロセス５００は、図５のプロセスは、プロセスアプリケーション診断プラットフォーム１１２などのプロセスアプリケーション診断プラットフォームによって実行することができる。
【００４３】
示された例では、プロセス５００は、デバイスにデプロイされたプロセスエンジンに関連するフロー定義と、デバイスにデプロイされたプロセスエンジンのインスタンスに関連する状態情報とを受け取る５０２で開始する。いくつかの実施形態では、フロー定義はリモートデータベースから受信され、デバイスにデプロイされたプロセスエンジンのインスタンスに関連する状態情報は、別個のリモートデータベースから受信される。フロー定義は、プロセスエンジンによって実行されるプロセスアプリケーションの動作を記述し、プロセスアプリケーションに関連付けられた１つ以上のプロセスフローを含む。状態情報は、各ステップでプロセスエンジンによって実行されるプロセスアプリケーションの状態を記述し、各ステップにおけるプロセスフローのトリガおよびアクティビティに関連する状態値を含む。
【００４４】
５０４において、デバイスにデプロイされたプロセスエンジンによって実行されるプロセスアプリケーションのインスタンスが再作成される。再作成されると、プロセスアプリケーションはどのステップからでも実行でき、関連する状態値を決定できる。
５０６において、所望の出力を達成するようにプロセスアプリケーションが変更される。例えば、プロセスアプリケーションの任意のステップを選択することができ、選択されたステップに関連付けられた１つ以上の入力データ値を変更して、選択されたステップの出力状態を調整することができる。選択されたステップ調整が後続のステップの状態に及ぼす影響を決定することができる。いくつかの実施形態では、アクティビティまたはトリガに関連する定義を修正して、所望の出力結果を生成することができる。
【００４５】
５０８において、プロセスアプリケーションを更新して、プロセスアプリケーションに所望の結果を達成させる変更を反映させ、さらにメモリに保存する。更新されたプロセスアプリケーションは、所望の出力を生成するためにトリガおよび／またはアクティビティによって使用される１つ以上の変更されたデータ値を含むデータレコードを含む。
【００４６】
図６は、プロセスアプリケーションを開発するためのプロセスの一実施形態を示すフローチャートである。いくつかの実施形態では、図６のプロセス６００は、図６に示すプロセスアプリケーション開発プラットフォーム１１０は、プロセスアプリケーション開発プラットフォーム１１０のようなプロセスアプリケーション開発プラットフォームによって実行することができる。
【００４７】
図示の例では、プロセス６００は、アクティビティおよびトリガのセットが受信されて、プロセスアプリケーションの１つ以上のプロセスフローが作成される、６０２で開始する。インテグレータには、例えば、Ｆｌｏｇｏ（登録商標）インタフェースなどのユーザインタフェースを介して、アクティビティおよびトリガを選択する機能が提供される。いくつかの実施形態では、インテグレータは、提供される利用可能なアクティビティおよびトリガのリストから１つ以上のアクティビティおよびトリガを選択する。他の実施形態では、インテグレータは、利用可能なアクティビティおよびトリガをローカルデータベースから検索し、検索の検索結果から１つ以上のアクティビティを選択することができる。他の実施形態では、インテグレータは、利用可能なアクティビティおよびトリガを遠隔データベースで検索し、遠隔データベースから１つ以上のアクティビティおよびトリガを選択することができる。他の実施形態では、インテグレータは、コマンドラインインターフェースを介して、利用可能なアクティビティおよびトリガを検索し、１つ以上のアクティビティおよびトリガを選択することができる。
【００４８】
６０４において、プロセスアプリケーションのトリガおよび／またはアクティビティに関連付けられた１つ以上の入力データ値が、所望の状態を生成するように変更される。例えば、プロセスアプリケーションの任意のステップを選択することができ、選択されたステップに関連付けられた１つ以上の入力データ値を変更して、選択されたステップの出力を調整することができる。選択されたステップの調整が後続のステップの状態に及ぼす影響を判定することができる。
【００４９】
６０６において、プロセスアプリケーションが格納される。いくつかの実施形態では、プロセスアプリケーションはローカルデータベースに格納される。他の実施形態では、プロセスアプリケーションは、リモートデータベースに格納される。
【００５０】
図７は、プロセスアプリケーションを修正するためのプロセスの一実施形態を示すフローチャートである。いくつかの実施形態では、図７のプロセス７００は、プロセスアプリケーション開発プラットフォーム１１０などのプロセスアプリケーション開発プラットフォームによって実装することができる。いくつかの実施形態では、プロセス７００は、プロセスアプリケーション開発プラットフォーム１１０のようなプロセスアプリケーション開発プラットフォームによって実装することができる。図７のプロセスは、ステップ５０６またはステップ６０４の一部を実行するように実施することができる。
【００５１】
図示の例では、プロセス７００は、ステップの選択が受信される７０２から始まる。プロセスフローは、ステップ１からステップｎで完了する１からｎステップで構成される。プロセスフローの各ステップにおいて、関連するトリガまたはアクティビティは、関連する状態値を有する。プロセスフローの任意のステップが選択可能である。
【００５２】
７０４において、各ステップに関連する状態値が表示される。いくつかの実施形態では、プロセスエンジンが動作している任意の時点における任意のステップの状態値を表示することができる。
【００５３】
７０６において、選択されたステップに関連付けられた状態が修正される。たとえば、選択されたステップの状態は、１つ以上の入力データ値に基づく。選択されたステップの状態は、先行するステップの出力に基づくこともできる。  １つ以上の入力データ値を変更して、選択されたステップの出力状態を調整することができる。
【００５４】
７０８において、変更された入力変数を用いて、選択されたステップからプロセスフローを実行することができる。例えば、プロセスフローをステップ１から実行する必要はなく、変更された選択されたステップから実行することができ、後続のステップに関連する状態値の変化を観察することができる。いくつかの実施形態では、中断することなくプロセスフローを最後まで実行することができる。各プロセスステップに関連する状態値を表示することができる。他の実施形態では、プロセスフローは段階的に実行される。プロセスフローは、ユーザインタフェースから受信したユーザ入力に応答して、プロセスフローの後続のステップに進むことができる。各ステップの出力状態を表示することができます。いくつかの実施形態では、プロセスフローは最後まで実行することができるが、ユーザインタフェースから受信したユーザ入力を介していつでも中断することができる。割り込み発生時の各ステップの出力状態を表示することができる。
【００５５】
図８は、プロセスエンジンをデプロイするためのプロセスの一実施形態を示すフローチャートである。いくつかの実施形態では、図８のプロセス８００は、図８のプロセスは、プロセスアプリケーション開発プラットフォーム１１０などのプロセスアプリケーション開発プラットフォーム、またはプロセスアプリケーション診断プラットフォーム１１２などのプロセス診断プラットフォームによって実装することができる。
【００５６】
８０２において、プロセスアプリケーションのためのプロセスエンジンコンポーネントの最小セットが決定される。プロセスエンジンコンポーネントの最小セットは、プロセスアプリケーション用にインテグレータによって定義された１つ以上のプロセスフローをサポートするために実際に必要とされるプロセスエンジンコンポーネントの最小数である。例えば、プロセスフローは、トリガおよび／またはフローによって呼び出されない１つ以上のアクティビティを含むことができる。アクティビティまたはトリガには、プロセスアプリケーションによって使用されないコンポーネントが含まれる場合がある。そのようなアクティビティー、トリガー、およびコンポーネントは識別され、除去される。
【００５７】
トリガおよび／またはアクティビティは、プロセスアプリケーションを実行するために必要な１つ以上のトランスポートに関連付けられてもよい。トランスポートの例には、ＨＴＴＰ／ＨＴＴＰＳ、ＭＱＴＴ、ＣｏＡＰなどがある。実際にプロセスアプリケーションによって呼び出されるトランスポートが識別され、プロセスアプリケーションに追加される。
【００５８】
８０４において、プロセスアプリケーションに含まれるトリガおよびアクティビティは、実行可能バイナリにコンパイルされる。いくつかの実施形態では、プロセスアプリケーションによって参照されないトリガおよびアクティビティに関連付けられたプロセスエンジンコンポーネントは無視され、実行可能ファイルから除外される。プロセスアプリケーションによって実際に呼び出されるトランスポートは識別され、実行可能ファイルに追加される。
【００５９】
８０６において、プロセスエンジンを含む実行可能ファイルがデバイスにデプロイされる。未使用のプロセスエンジンコンポーネントは実行可能ファイルから削除されるため、デバイスによって実行されると、プロセスエンジンはより迅速にオンラインになる可能性があります。いくつかの実施形態では、実行可能ファイルは、無線接続を介してデプロイされ、デバイスにダウンロードされる。他の実施形態では、実行可能ファイルは、物理メモリデバイスにデプロイされ、デバイスに転送される。他の実施形態では、実行可能ファイルは、デバイスへの有線接続を介してデプロイされる。いくつかの実施形態では、実行可能ファイルは、誤出力を生成したデバイスとは異なるデバイスにデプロイされる。
【００６０】
前述の実施形態は、理解を明確にするために詳細に記載しているが、本発明は、ここに記載された詳細に限定されない。本発明を実施する多くの代替方法がある。開示された実施形態は例示であり、限定的ではない。
【図１】
2019521402.tif 000003
【図２Ａ】
2019521402.tif 000004
【図２Ｂ】
2019521402.tif 000005
【図３】
2019521402.tif 000006
【図４】
2019521402.tif 000007
【図５】
2019521402.tif 000008
【図６】
2019521402.tif 000009
【図７】
2019521402.tif 000010
【図８】
2019521402.tif 000011
【国際調査報告】
2019521402.tif 000012