(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-02
(54)【発明の名称】アプリ、特にイベントアーティファクトを含むアプリ開発の管理、方法およびシステム
(51)【国際特許分類】
G06F 8/20 20180101AFI20240925BHJP
G06F 8/60 20180101ALI20240925BHJP
【FI】
G06F8/20
G06F8/60
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024515356
(86)(22)【出願日】2022-08-09
(85)【翻訳文提出日】2024-05-02
(86)【国際出願番号】 EP2022072354
(87)【国際公開番号】W WO2023036540
(87)【国際公開日】2023-03-16
(31)【優先権主張番号】PCT/EP2021/074590
(32)【優先日】2021-09-07
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】524087080
【氏名又は名称】メンディクス テクノロジー ベー.フェー.
【氏名又は名称原語表記】MENDIX TECHNOLOGY B.V.
(74)【代理人】
【識別番号】110003317
【氏名又は名称】弁理士法人山口・竹本知的財産事務所
(74)【代理人】
【識別番号】100075166
【氏名又は名称】山口 巖
(74)【代理人】
【識別番号】100133167
【氏名又は名称】山本 浩
(74)【代理人】
【識別番号】100169627
【氏名又は名称】竹本 美奈
(72)【発明者】
【氏名】ホゥイティン,ヨス
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AD19
5B376BA18
5B376BC41
5B376DA07
5B376FA13
5B376GA03
(57)【要約】
改善されたアプリ(120)の管理、特にイベントアーティファクト(122)を含むアプリ(120)の開発のために、
アプリ開発プラットフォーム(118)のアプリ開発ユーザインタフェース(UI)(116)をアプリ(120)開発のためにユーザに提供するステップと、
アプリ開発UI(116)とのユーザインタラクションに応答して、アプリ(120)を開発するために、デプロイされ実行されているそれぞれのプロデュースアプリ(124)からそれぞれのイベントアーティファクト(122)をインポートするユーザの意図をキャプチャするステップと、
取り込まれたユーザの意図に対応するそれぞれのイベントアーティファクト(122)をアプリ開発UI(116)にインポートするステップと、
インポートされたそれぞれのイベントアーティファクト(122)を使用して、アプリ開発UI(116)を通じてアプリ(120)を開発するステップと、
開発されたアプリ(120)をターゲットデバイス(140)にデプロイして実行するステップと、
それぞれのイベントアーティファクト(122)に対応するイベント情報(126)を、それぞれのプロデュースアプリ(124)からデータストレージプラットフォーム(150)にインポートするステップと、
データストレージプラットフォーム(150)にインポートされたイベント情報(126)を、データストレージプラットフォーム(150)から、デプロイされ実行されているアプリ(120)に提供するステップと、
デプロイされ実行中のアプリ(120)によって構成されるアプリアルゴリズム(128)を、提供されたイベント情報(126)に適用して、出力データ(130)を生成するステップと、
を含むコンピュータ実装方法が提案されている。
【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
アプリ(120)を開発するためにアプリ開発プラットフォーム(118)のアプリ開発ユーザインタフェース(UI)(116)をユーザに提供するステップと、
アプリ開発UI(116)とのユーザインタラクションに応答して、アプリ(120)を開発するために、デプロイされ実行されているそれぞれのプロデュースアプリ(124)からそれぞれのイベントアーティファクト(122)をインポートする前記ユーザの意図をキャプチャするステップと、
前記キャプチャされたユーザの意図に対応する前記それぞれのイベントアーティファクト(122)をアプリ開発UI(116)にインポートするステップと、
インポートされたそれぞれのイベントアーティファクト(122)を使用して、前記アプリ開発UI(116)を通じて前記アプリ(120)を開発するステップと、
前記開発されたアプリ(120)をターゲットデバイス(140)でデプロイして実行するステップと、
前記それぞれのイベントアーティファクト(122)に対応するイベント情報(126)を、前記それぞれのプロデュースアプリ(124)からデータストレージプラットフォーム(150)にインポートするステップと、
前記データストレージプラットフォーム(150)にインポートされたイベント情報(126)を、前記データストレージプラットフォーム(150)から前記デプロイされ実行されているアプリ(120)に提供するステップと、
出力データ(130)を生成するために、前記デプロイされ実行中のアプリ(120)により構成されるアプリアルゴリズム(128)を、前記提供されたイベント情報(126)に適用するステップと、
を含むコンピュータ実装方法。
【請求項2】
前記生成された出力データ(130)を、前記ターゲットデバイス(140)のユーザインタフェース(142)を介して前記ターゲットデバイス(140)のユーザに対して、表示させるステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
生成された出力データ(130)を、ターゲットデバイス(140)またはターゲットデバイス(140)に接続された別のデバイス(144)の分析、監視、操作および/または制御に使用させるステップ、および/または
生成された出力データ(130)を使用して、それぞれのターゲットデバイス(140)のユーザを分析および/または監視させるステップ、
をさらに含む、先行する請求項のいずれかに記載のコンピュータ実装方法。
【請求項4】
前記それぞれのイベントアーティファクト(122)は、少なくとも1つのイベント通知および/または少なくとも1つのイベント搬送状態トランスファーを含む、先行する請求項のいずれかに記載のコンピュータ実装方法。
【請求項5】
前記それぞれのイベントアーティファクト(122)は、前記それぞれデプロイされ実行されているプロデュースアプリ(124)からの少なくとも1つのイベントアーティファクト(122)を含むそれぞれのイベントチャネル(132)を含む、
先行する請求項のいずれかに記載のコンピュータ実装方法。
【請求項6】
前記それぞれのイベントチャネル(132)は、前記それぞれデプロイされ実行されているプロデュースアプリ(124)からの少なくとも1つのイベントアーティファクト(122)と、少なくとも第2の、デプロイされ実行されているプロデュースアプリ(124’)からの少なくとも1つのイベントアーティファクト(122’)とを含む、
請求項5に記載のコンピュータ実装方法。
【請求項7】
前記プロデュースアプリ(124)の修正時に、
元のプロデュースアプリ(124)のそれぞれのイベントアーティファクト(122)の継続使用または修正されたプロデュースアプリ(124’’)のそれぞれのイベントアーティファクト(122)の使用開始に対応する少なくとも2つのオプション(134)をユーザに表示するステップと、
表示された選択肢のうちの1つを選択するユーザの意図をキャプチャするステップ(134)と、
前記ユーザが、前記修正されたプロデュースアプリ(124’’)の前記それぞれのイベントアーティファクト(122)の使用を開始することを選択した場合に、それぞれのイベントアーティファクト(122)に対応するイベント情報(126)を、それぞれの修正プロデュースアプリ(124’’)からデータストレージプラットフォーム(150)にインポートするステップと、
をさらに含む、前記請求項のいずれかに記載のコンピュータ実装方法。
【請求項8】
前記ユーザが、それぞれのプロデュースアプリ(124)のそれぞれのイベントアーティファクト(122)と互換性のない、それぞれの修正プロデュースアプリ(124’’)のそれぞれのイベントアーティファクト(122)の使用を開始することを選択した場合に、
それぞれの修正プロデュースアプリ(124’’)のそれぞれのイベントアーティファクト(122)をアプリ開発UI(116)にインポートするステップと、
インポートされたそれぞれの修正プロデュースアプリ(124’’)のそれぞれのイベントアーティファクト(122)を使用して、アプリ開発UI(116)を通じてアプリ(120)を開発するステップと、
開発されたアプリ(120)をターゲットデバイス(140)にデプロイして実行するステップと、
をさらに含む請求項7に記載のコンピュータ実装方法。
【請求項9】
アプリ開発に使用可能なイベントアーティファクト(122)を格納するためのリポジトリ(152)を検索するために、イベントアーティファクト検索UI(136)を前記ユーザに提供するステップを、さらに含む、前記請求項のいずれかに記載のコンピュータ実装方法。
【請求項10】
生成された出力データ(130)に関連する情報を、イベントアーティファクト(122)として、アプリ開発に再利用可能なイベントアーティファクト(122)のリポジトリ(152)に格納するステップをさらに含む、先行する請求項のいずれかに記載のコンピュータ実装方法。
【請求項11】
前記それぞれのプロデュースアプリ(124)から、前記それぞれのイベントアーティファクト(122)に対応する前記それぞれのイベント情報(126)を検証するステップと、
前記それぞれのイベント情報(126)が検証された場合にのみ、前記それぞれのイベントアーティファクト(122)に対応する前記それぞれのイベント情報(126)を、前記それぞれのプロデュースアプリ(124)から前記データストレージプラットフォーム(150)にインポートするステップと、
をさらに含む、先行する請求項のいずれかに記載のコンピュータ実装方法。
【請求項12】
前記作成されるアプリ(120)は、第1のモデルの少なくとも一部を含むことができ、前記第1のモデルは、前記作成されるアプリ(120)及び/又は前記作成されるアプリ(120)の機能性を特徴付け、
前記第1のモデルは、任意選択でエンティティ、エンティティにプロパティおよび値を割り当てる属性、およびエンティティが互いに通信することを可能にする関連付けのうちの少なくとも1つ、またはそれらの任意の組み合わせを含むことができ、エンティティは、前記イベントアーティファクト(122)、前記イベント情報(126)、または情報オブジェクトを表し、
前記第1のモデルは、前記イベントアーティファクト(122)、イベント情報(126)、情報オブジェクト、またはアプリ(120)のページに関連するデータを処理するためのワークフローを任意選択で含み得る、
前記ページは、任意選択で、前記イベントアーティファクト(122)、前記イベント情報(126)、または情報オブジェクト、または前記イベントアーティファクト(122)、イベント情報(126)、または情報オブジェクトから得られた情報をアプリユーザに対して表示することを実行する、
任意選択で、それぞれデプロイされ実行されているプロデュースアプリ(124)は、第2のモデルの少なくとも一部を含むことができ、ここで、第2のモデルは、任意選択で、少なくとも部分的に第1のモデルと同様の特性またはアーキテクチャを有することができ、ここで、第1のモデルは、任意選択で、少なくとも部分的に第2のモデルとは異なり得る、
先行する請求項のいずれかに記載のコンピュータ実装方法。
【請求項13】
先行する請求項のいずれか1項に記載のコンピュータ実施方法のステップを実行するように配置および構成されたコンピュータシステム(100、118)。
【請求項14】
コンピュータプログラム製品(162)であって、コンピュータシステム(100、118)により実行されると、前記コンピュータシステム(100、118)に、請求項1から12のいずれか1項に記載の方法を実行させるコンピュータプログラムコードを含む、コンピュータプログラム製品。
【請求項15】
コンピュータシステム(100、118)によって実行されると、前記コンピュータシステム(100、118)に請求項1から12のいずれか1項に記載の前記方法を実行させるコンピュータプログラムコードを含むコンピュータプログラム製品(162)を含むコンピュータ読み取り可能媒体(160)。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、ソフトウェア管理システム、特にアプリ開発用システムに向けられており、そのようなアプリ(本明細書では総称して製品システムという)の管理、ビルド、テスト、デプロイ、繰返しを行うために使用することができる。
【背景技術】
【0002】
近年、ますます多くのコンピュータソフトウェア製品が、アプリケーションの形態で、個人的なニーズとビジネスニーズの両方のために使用されている。このようなアプリは、クラウドコンピューティングプラットフォームや「オンプレミス」と同様に、モバイルコンテキストで使用されることがあり、特定の機能セットを提供することがある。本発明は、一般に、このようなアプリ、特にイベントアーティファクトを含むアプリの開発および作成に関する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
現在、このようなアプリの管理や開発をサポートする製品システムやソリューションが存在する。このような製品システムは、改善の余地がある。
【課題を解決するための手段】
【0004】
様々に開示された実施形態は、アプリの管理を容易にするために使用され得る方法とコンピュータシステムからなる。
【0005】
本発明の第1の態様によれば、アプリを管理するコンピュータ実装方法は、
アプリを開発するためにアプリ開発プラットフォームのアプリ開発ユーザインタフェース(UI)をユーザに提供するステップと、
アプリ開発UIとのユーザインタラクションに応答して、アプリを開発するためにデプロイされ実行されているそれぞれのプロデュースアプリからそれぞれのイベントアーティファクトをインポートするユーザの意図をキャプチャするステップと、
取り込まれたユーザの意図に対応するそれぞれのイベントアーティファクトをアプリ開発UIにインポートするステップと、
インポートされたそれぞれのイベントアーティファクトを使用して、アプリ開発UIを通じてアプリを開発するステップと、
開発されたアプリをターゲットデバイスにデプロイして実行するステップと、
それぞれのイベントアーティファクトに対応するイベント情報を、それぞれのプロデュースアプリからデータストレージプラットフォームにインポートするステップと、
データストレージプラットフォームにインポートされたイベント情報を、データストレージプラットフォームからデプロイされ実行中のアプリに提供するステップと、
提供されたイベント情報に対して、デプロイされ実行中のアプリが構成するアプリアルゴリズムを適用し、出力データを生成するステップと、
を含むことができる
【0006】
本発明の第2の側面によれば、アプリを管理するこのコンピュータ実装方法のステップを実行するように、コンピュータシステムを配置および構成することができる。特に、説明されるコンピュータシステムは、
アプリを開発するために、アプリ開発プラットフォームのアプリ開発ユーザインタフェース(UI)をユーザに提供するステップと、
アプリ開発UIとのユーザインタラクションに応答して、アプリを開発するためにデプロイされ実行されているそれぞれのプロダクションアプリからそれぞれのイベントアーティファクトをインポートするユーザの意図をキャプチャするステップと、
取り込まれたユーザの意図に対応するそれぞれのイベントアーティファクトをアプリ開発UIにインポートするステップと、
インポートされたそれぞれのイベントアーティファクトを使用して、アプリ開発UIを通じてアプリを開発するステップと、
開発されたアプリをターゲットデバイスにデプロイして実行するステップと、
それぞれのイベントアーティファクトに対応するイベント情報を、それぞれの開発アプリからデータストレージプラットフォームにインポートするステップと、
データストレージプラットフォームにインポートされたイベント情報を、データストレージプラットフォームからデプロイされ実行されているアプリに提供するステップと、
前記提供されたイベント情報に、前記デプロイされ実行されているアプリによって構成されるアプリアルゴリズムを適用して、出力データを生成するステップと、
を実行するように配置および構成され得る。
【0007】
本発明の第3の側面によれば、コンピュータプログラム製品は、コンピュータシステムによって実行されると、アプリを管理するこのコンピュータ実装方法をコンピュータシステムに実行させるコンピュータプログラムコードを含むことができる。
【0008】
本発明の第4の態様によれば、コンピュータ可読媒体は、コンピュータシステムによって実行されると、コンピュータシステムにこのコンピュータ実装のアプリ管理方法を実行させるコンピュータプログラムコードを含むことができる。一例として、上記のコンピュータ可読媒体は、非一過性のものであってもよく、さらに、ストレージデバイス上のソフトウェアコンポーネントであってもよい。
【0009】
いくつかの例では、言及されたアプリ開発プラットフォームは、ビジュアルモデルベースおよび/またはローコードアプリ開発プラットフォームであってもよい。
【0010】
以上、当業者が以下の詳細な説明をより良く理解できるように、本開示の技術的特徴をかなり大まかに概説した。以下、特許請求の範囲の主題を形成する、本開示の追加の特徴および利点について説明する。当業者は、本開示の同じ目的を遂行するための他の構造を修正または設計するための基礎として、開示された着想および特定の実施形態を容易に使用し得ることを理解するであろう。また、当業者であれば、そのような等価な構成は、最も広い形態における本開示の精神および範囲から逸脱しないことを理解するであろう。
【0011】
また、以下の詳細な説明を行う前に、特定の語句に対する様々な定義が本特許文献を通して提供されており、当業者であれば、そのような定義は、定義された語句に先行する使用だけでなく将来の使用にも、多くの場合に適用されることを理解されたい。一部の用語は多種多様な実施形態を構成し得るが、添付の特許請求の範囲は、これらの用語を特定の実施形態に明示的に限定してもよい。
【図面の簡単な説明】
【0012】
図1~8は、それぞれ製品システムにおけるアプリの管理を容易にする例示的なシステムの機能ブロック図である。
図9~13は、それぞれ、製品システムにおけるアプリの管理を容易にする例示的な方法のフロー図を示す。
図14は、実施形態が実装可能なデータ処理システムのブロック図を示す。
【発明を実施するための形態】
【0013】
以下、製品システムにおいてアプリ、特にイベントアーティファクトを含むアプリを管理するためのシステムおよび方法に関連する様々な技術を、図面を参照して説明する。後述する図面、および本特許文献において本開示の原理を説明するために使用される様々な実施形態は、例示のためのものであり、本開示の範囲を限定するように解釈されるべきではない。当業者であれば、本開示の原理は、任意の適切に配置された装置において実施され得ることを理解するであろう。特定のシステム要素によって実行されるものとして説明されている機能は、複数の要素によって実行されてもよいことを理解されたい。同様に、例えば、ある要素が、複数の要素によって実行されるものとして説明されている機能を実行するように構成されていてもよい。本特許文献の多数の革新的な教示を、例示的な非限定的実施形態を参照して説明する。
【0014】
アプリは一般に、実行時に特定の所望のタスクを実行するソフトウェアプログラムを指す。一般的に、複数のアプリは、1つ以上のオペレーティングシステム(「OS」)、仮想マシン(JAVATM(登録商標)プログラミング言語をサポートするなど)、デバイスドライバなどを含むランタイム環境で実行される。
【0015】
ネイティブアプリを含むアプリは、従来のソースコードを使用して作成、編集、表現することができる。このような従来のソースコードの例としては、C、C++、Java(登録商標)、Flash、Python、Perl、およびアプリを表現する他のスクリプトベースの方法がある。そのようなスクリプトベースのアプリ、またはそのようなスクリプトベースのアプリの一部の開発、作成、および管理は、適切に訓練されたユーザの手動コーディングによって達成することができる。
【0016】
開発者は、希望するアプリを実装/開発するために、アプリケーション開発フレームワーク(「ADF」)(それ自体がアプリケーションまたはアプリである)を使用することが多い。ADFは、アプリの開発で直接/間接的に使用できる、定義済みのコード/データモジュールのセットを提供する。ADFはまた、統合開発環境(「IDE」)、コードジェネレータ、デバッガなどのツールを提供することもあり、開発者がアプリの所望のロジックをより速く/より簡単にコーディング/実装することを容易にする。
【0017】
一般的に、ADFは再利用可能なコンポーネントを提供することで、アプリ開発を簡素化する。再利用可能なコンポーネントは、アプリ開発者がユーザインタフェース(「UI」)とアプリのロジックを定義するために使用することができ、例えば、必要なタスクを実行するコンポーネントを選択し、選択したコンポーネントの外観、動作、インタラクションを定義することができる。ADFの中には、疎結合を促進し、アプリの開発と保守を容易にするモデルビューコントローラ設計パターンに基づいているものもある。
【0018】
別のアプローチによれば、ビジュアルモデルベースの表現を使用してアプリを作成、編集、表現することもできる。従来のソースコードの実装とは異なり、このようなアプリは、ビジュアルモデリング環境内で論理要素の視覚的描写を描画、移動、接続、および/または切断することによって、作成、編集、および/または表現することができる。アプリのビジュアルモデルベースの表現では、シンボル、図形、線、色、陰影、アニメーション、および/または他のビジュアル要素を使用して、ロジック、データ、メモリ構造、またはユーザインタフェース要素を表現することができる。従来のスクリプトベースのアプリをプログラムするためには、プログラマーは通常、複雑なプログラミング構文規則に従って詳細なスクリプトを打ち出す必要がある。対照的に、ビジュアルモデルベースのアプリのプログラミングは、場合によっては、さまざまな論理要素(アクションブロックやデシジョンブロックなど)をつなげて、アプリの動作を定義するビジュアルフローチャートを作成することで行うことができる。同様に、ビジュアルモデルベースのアプリでデータ構造(変数タイプ、データベースオブジェクト、クラスなど)やユーザインタフェース要素(ドロップダウンボックス、リスト、テキスト入力ボックスなど)を定義するには、スクリプトで詳細なコマンドを入力するのではなく、仮想ワークスペース内に論理要素の視覚的な描写を描画、配置、または接続することで行うことができる。したがって、ネイティブアプリを含むビジュアルモデルベースのアプリは、従来のスクリプトベースのアプリと比較して、プログラムおよび/または編集をより直感的に行うことができる。本明細書では、アプリの管理、特にイベントアーティファクトからなるアプリを開発するためのアプローチが提案されており、これには説明したビジュアルモデルベースの表現が関与している可能性がある。
【0019】
簡潔にするため、「モデル」、「ビジュアルモデル」、または「アプリケーション」もしくは「アプリ」への言及は、特に明記しない限り、ネイティブアプリを含むビジュアルモデルベースのアプリを指すと理解されるべきである。場合によっては、このようなビジュアルモデルベースのアプリは、コンピュータシステム上で実行するための完全なスタンドアロンアプリを表すことができる。ビジュアルモデルベースのアプリは、特定のタスクや機能を実行するように構成された個別モジュールを表すこともできるが、完全なアプリを表すことはない。代わりに、このような個別モジュールは、より大きなアプリに挿入したり、他の個別モジュールと組み合わせて、より複雑なタスクを実行したりすることができる。このような個別のモジュールの例としては、郵便番号を検証するためのモジュール、天気フィードから現在の天気に関する情報を受信するためのモジュール、および/またはグラフィックをレンダリングするためのモジュールをあげることができる。
【0020】
ビジュアルモデルは、内部表現と1つ以上の関連するビジュアル表現の2つの形式で表現されることがある。内部表現は、アプリ(またはアプリの一部)の動作をキャプチャして定義するためにモデリング環境で使用されるファイル形式に従ってエンコードされたファイルである場合がある。例えば、内部表現は、アプリが受け取ることができる入力、アプリが提供することができる出力、アプリが結果に到達することができるアルゴリズムと操作、アプリが表示することができるデータ、アプリが保存することができるデータなどを定義することができる。内部表現はまた、実行時にアプリのロジックをどのように実行するかを実行環境に指示するために使用されることもある。内部表現は、人間が読めないコード(バイナリコードなど)の形で保存されることもある。また、内部表現は、バイナリ格納されたJSОN(Javascript object notation)フォーマット、および/またはXMLフォーマットに従って格納されることもある。実行時に、実行エンジンは、内部表現を使用して、プロセッサによって実行されるとプロセッサにモデルの機能を実装させる実行可能なマシンコードをコンパイルおよび/または生成することができる。
【0021】
内部表現は、1つ以上の視覚的表現と関連付けられることがある。視覚的表現は、アプリのロジックがどのように流れるかを示す視覚的要素で構成される場合があるが、コンパイルまたは実行されるようには設計されていない。これらの視覚的表現には、例えば、アプリがどのように動作するかをユーザに示すフローチャートや決定木が含まれる。ビジュアルモデルはまた、ユーザから受信されるデータ、保存されるデータ、およびユーザに表示されるデータを視覚的に描写することもできる。また、これらの視覚モデルは、ユーザが直感的な方法でモデルを操作できるインタラクティブなものであってもよい。例えば、視覚的表現は、デフォルトで一定の詳細レベル(例えば、分岐の数、表示されるパラメータの数、表示されるロジックの粒度)を表示するように構成される場合がある。例えば、ロジックの分岐を表示または非表示にしたり、パラメータのセットを表示または非表示にしたりすることができる。視覚モデルの要素に関連する詳細は、デフォルトでは表示されないが、ユーザが適切な要素をクリックしたときに画面上に表示されるスライドウィンドウまたはポップアップに表示することができる。また、ユーザは、モデルのズームインまたはズームアウト、および/または、モデルの異なる部分を検査するために、モデルの異なる部分をパンすることができる。また、モデルのある部分から別の部分にロジックの枝をコピーまたはペーストする、または、第1のモデルから第2のモデルにロジックの枝をコピー/ペーストすることもできる。場合によっては、モデルの一部に他の部分へのリンクが含まれていることがあり、ユーザがリンクをクリックすると、ユーザは自動的にモデルの別の部分に導かれる。閲覧ユーザは、モデルがモデリング環境内に表示された場合に閲覧ユーザがモデルと対話するのと少なくとも同じ方法で、視覚的表現と対話することができる。言い換えれば、視覚的表現は、モデルが視覚的モデリング環境内に表示された場合にどのように表示されるかを模倣するように構成することができる。単一の内部表現は、アプリロジックを表示するために異なるスタイルまたはフォーマットルールを使用する複数の視覚表現に対応することができる。例えば、同じ内部表現に対応する複数の視覚表現は、色の使用、構成または省略される要素、ロジックフローを描写するための記号、図形、線、色、および/または色合いの使用において、互いに異なる場合がある。
【0022】
ビジュアルモデルベースの表現、ビジュアルモデルベースのアプリ、および/またはビジュアルモデルの上述の機能性を含むアプローチは、いわゆるローコード開発プラットフォームによって構成されると理解されることがある。一例として、このようなローコード開発プラットフォームは、さらに、従来の手作業でコード化されたコンピュータプログラミングの代わりに、グラフィカルユーザインタフェースおよびコンフィギュレーションを通じてアプリケーションソフトウェアを作成するために使用される開発環境を提供するソフトウェアとして説明することができる。ローコードモデルは、様々な経験レベルの開発者が、モデル駆動ロジックと組み合わせて視覚的ユーザインタフェースを使用してアプリケーションを作成することを可能にする。このようなローコード開発プラットフォームは、完全に操作可能なアプリケーションを作成することも、特定の状況用に追加のコーディングを必要とすることもある。ローコードアプリ開発プラットフォームは、従来の手作業によるコーディングの量を減らし、ビジネスアプリの迅速な提供を可能にする。共通の利点は、正式なプログラミングスキルを持つ人だけでなく、より幅広い人々がアプリの開発に貢献できることだ。ローコードアプリ開発プラットフォームは、セットアップ、トレーニング、デプロイメント、メンテナンスの初期コストも下げることができる。
【0023】
図1を参照すると、アプリ120、特にイベントアーティファクト122を含むアプリ120の管理を容易にする例示的なコンピュータシステムまたはデータ処理システム100の機能ブロック図が示されている。処理システム100は、プロセッサ102によってアクセスされるメモリ104から少なくとも1つのアプリケーションソフトウェアコンポーネント106を実行するように構成される少なくとも1つのプロセッサ102を含む(視覚モデルベースの)アプリ開発プラットフォーム118を含むことができる。ここで、アプリ開発プラットフォーム118は、ビジュアルモデルベースの表現、ビジュアルモデルベースのアプリ、および/またはビジュアルモデルの上述の機能性を構成することができ、一例として、ビジュアルモデルベースのアプリ開発プラットフォームまたはローコードアプリ開発プラットフォームである。アプリケーションソフトウェアコンポーネント106は、プロセッサ102に本明細書に記載される様々な行為および機能を実行させるように構成(すなわち、プログラム)され得る。例えば、記載されたアプリケーションソフトウェアコンポーネント106は、データベースなどのデータストア108に製品データを生成して格納するように構成されたアプリ開発アプリケーションの1つまたは複数のコンポーネントを構成する、および/または対応することができる。さらに、記載されたアプリケーションソフトウェアコンポーネント106は、アプリ作成または開発アプリケーションの1つまたは複数のコンポーネントで構成され、および/または対応することができる。
【0024】
一例として、アプリ開発プラットフォーム118は、クラウドベースであってもよく、インターネットベースであってもよく、および/または、例えば、ローコードおよび/またはビジュアルモデルベースのアプリ開発をサポートすることを含む、アプリ開発および作成サポートを提供するプロバイダによって運営されてもよい。ユーザは、アプリ開発プラットフォーム118の近くに位置していてもよいし、アプリ開発プラットフォーム118から離れた場所、例えば他のどこにいてもよく、例えば、インターネットを介してアプリ開発プラットフォーム118に接続するためのモバイルデバイスを使用してもよく、モバイルデバイスは、入力デバイス110およびディスプレイデバイス112から構成されてもよい。いくつかの例では、アプリ開発プラットフォーム118は、コンピュータ、ラップトップ、パッド、オンプレミスのコンピューティング設備などのユーザのデバイス上にインストールされ、実行され得る。
【0025】
本明細書で説明するイベントアーティファクト機能を含むアプリ管理および/または開発を構成するように適合させることができる製品システムの例は、米国マサチューセッツ州ボストンのMendix Inc.のローコードソフトウェア開発プラットフォームで構成することができる。このプラットフォームは、アプリ120を構築、テスト、デプロイ、反復、開発、作成、および管理するためのツールを提供し、視覚的でモデル駆動型のソフトウェア開発に基づいている。しかしながら、本明細書で説明するシステムおよび方法は、他の製品システム(例えば、製品ライフサイクル管理(PLM)、製品データ管理(PDM)、アプリケーションライフサイクル管理(ALM)システム)および/または製品データを生成してデータベースに格納する他の任意のタイプのシステムで使用できることを理解されたい。また、本明細書で説明する1つまたは複数のデータストアとして使用することができるデータベースの例は、Oracle、Microsoft SQL Serverなどのデータベースサーバアプリケーション、またはデータレコードを格納するために動作可能な任意の他のタイプのデータストアで構成される。
複雑なアプリ開発および/または管理環境において、アプリ120を管理すること、特にイベントアーティファクト122を含むアプリ120を開発することは、困難で時間がかかる可能性があることを理解されたい。例えば、ユーザの高度なコーディングまたはソフトウェア開発または管理知識が必要とされる場合があり、または多くのオプションの選択が意識的に行われる必要があり、両方とも多くの手動ステップを含み、これは長く効率的でないプロセスである。
【0026】
強化された管理アプリ120、特にイベントアーティファクト122を含むアプリ120の開発を可能にするために、記載された製品システムまたは処理システム100は、少なくとも1つの入力デバイス110および少なくとも1つのディスプレイデバイス112(ディスプレイスクリーンなど)を備えることができる。記載されたプロセッサ102は、ディスプレイデバイス112を介してグラフィカルユーザインタフェース(GUI)114を生成するように構成され得る。そのようなGUI114は、アプリ120を開発し、例えば、展開する原因となる入力を、入力デバイス110を通じて提供するためにユーザによって使用可能なボタン、リンク、検索ボックス、リスト、テキストボックス、画像、スクロールバーなどのGUI要素から構成され得る。一例として、GUI114は、アプリ120を開発するためにユーザに提供されるアプリ開発UI116を構成することができる。
【0027】
例示的な実施形態において、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、アプリ120を開発するためのアプリ開発プラットフォーム118のアプリ開発ユーザインタフェース(UI)116をユーザに提供するように構成されてもよい。
【0028】
上述したように、アプリ開発プラットフォーム118は、ビジュアルモデルベースの表現、ビジュアルモデルベースのアプリ、および/またはビジュアルモデルの上述した機能性を構成することができ、一例として、ビジュアルモデルベースのアプリ開発プラットフォームまたはローコードアプリ開発プラットフォームである。アプリ開発UI118は、ユーザがアプリ120を開発することを支援し可能にする、アプリ開発プラットフォーム118の対話型ユーザインタフェースを提供することができる。一例として、アプリ120は、実行時に特定の所望のタスクを実行するソフトウェアプログラムであってもよいし、ソフトウェアプログラムから構成されてもよい。
いくつかの例では、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、アプリ開発UI116とのユーザインタラクションに応答して、アプリ120を開発するために、それぞれデプロイされ実行中のプロデュースアプリ124からそれぞれのイベントアーティファクト122をインポートするユーザの意図を捕捉するようにさらに構成され得る。
【0029】
一例として、イベントは、ソフトウェア、例えば、それぞれのプロデュースアプリ124または開発されるアプリ120によって認識されるアクションまたは発生であってよく、多くの場合、それぞれのプロデュースアプリ124などの外部環境から非同期に発信され、ソフトウェアによって処理され得る。例えば、コンピュータイベントは、システムによって、ユーザによって、または他の方法で生成またはトリガされ得る。イベントは、プログラムフローと同期して処理される場合がある。すなわち、ソフトウェアは、イベントが処理される1つまたは複数の専用の場所、頻繁にはイベントループを有する場合がある。イベントのソースは、それぞれのプロデュースアプリ124、それぞれのプロデュースアプリ124などのソフトウェアと相互作用する可能性のある(他の)ユーザ、マシンまたはデバイスから構成される場合がある。ソフトウェアは、例えば、タスクの完了を伝達するために、それ自身の一連のイベントをイベントループにトリガすることもある。イベントに応答して動作を変更するソフトウェアは、イベントドリブンと呼ばれ、多くの場合、インタラクティブであることを目的としている。このコンテキストでは、それぞれのイベントアーティファクト122は、そのようなイベントまたはそのようなタイプのイベントを特徴付けまたは記述する情報の一部である可能性がある。
【0030】
このようなイベントアーティファクト122は、例えば他のデバイス144上でデプロイされ実行されている可能性のあるそれぞれのプロデュースアプリ124のような他のアプリによって構成または生成される可能性がある。ユーザは、アプリ120を開発するために、それぞれのイベントアーティファクト122をインポートする意図を表明するために、アプリ開発UI116と対話することができる。これは、アプリ120を開発するために、多種多様な異なるイベントアーティファクト122をインポートして使用することができるため、特に非IT専門家であるユーザにとって、アプリ120の開発をかなり容易にし、スピードアップする可能性がある。
一例として、ユーザが特定のイベントアーティファクト122を検索できるように、イベントアーティファクト検索UI136がアプリ開発UI116を介してユーザに提供される場合がある。利用可能なイベントアーティファクト122は、選択のためにイベントアーティファクト検索UI136を介してユーザに表示され、ユーザは、アプリ120を開発する目的でアプリ開発UI116にインポートするために、表示されたイベントアーティファクト122のうちの1つを選択することができる。いくつかの例では、利用可能なすべてのイベントアーティファクト122が、選択のためにイベントアーティファクト検索UI136を介してユーザに表示され、ユーザは、アプリ120を開発する目的で、表示されたイベントアーティファクト122の1つをインポートするために選択することができる。
【0031】
いくつかの例では、利用可能なイベントアーティファクト122は、イベントアーティファクト122のリポジトリ150に格納されることがある。このようなリポジトリ150は、例えば、米国カリフォルニア州サンフランシスコのGitHub, Inc.によって提供されてもよい。他の例では、イベントアーティファクト122のリポジトリ150は、アプリ開発プラットフォーム118またはデータ処理システム100によって構成される場合がある。
【0032】
さらなる例では、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、捕捉されたユーザの意図に対応するそれぞれのイベントアーティファクト122をアプリ開発UI116にインポートするようにさらに構成され得ることが理解されるべきである。一例として、インポートは、アプリ開発UI116の「ドラッグアンドドロップ」または「ドロップダウン」ウィンドウによって行うことができる。
【0033】
それぞれのイベントアーティファクト122のインポートについては、例えば、それぞれのイベントアーティファクト122をアプリ開発UI116にコピーすることができる。いくつかの例では、それぞれのイベントアーティファクト122のインポートは、それぞれのイベントアーティファクト122のメタデータまたは以下でより詳細に説明される関連イベント情報126をインポートすることからなる場合がある。そのようなメタデータは、それぞれのプロデュースアプリ124、(他の)ユーザ、マシンまたはデバイスなどのイベントアーティファクトの出所に関する情報を含むことがある。言及されたメタデータは、一例として、開始、停止、保留、完了など、それぞれのプロデュースアプリ124の動作中にイベントが発生したときに変化する可能性のあるステータス、またはステータス間の可能性のある変化または遷移に関する情報から構成される場合がある。いくつかの例では、言及されたメタデータは、それぞれのイベントアーティファクト122または関連するイベント情報126のタイプおよび/またはフォーマットに関する情報、例えば整数、10進数、テキストストリング、ブールデータなどから構成されることがある。
【0034】
小売領域における例示的なプロデュースアプリ124の場合、それぞれのイベントアーティファクト122は、顧客の新しい購入注文に関連する可能性があり、それぞれのイベントアーティファクト122の言及されたメタデータは、顧客、ベンダー、製品、数量、価格、納期などに関する情報を含む可能性がある。産業環境では、プロデュースアプリ124は、機械または他のデバイス144を操作または監視するために使用される場合があり、それによって、それぞれのイベントアーティファクト122は、サービスアクションを必要とする可能性のある他のデバイス144の故障に関連する場合がある。この環境では、言及されたメタデータは、他のデバイス144の典型的な通常動作シナリオおよび/または異なる典型的なエラーシナリオ、例えば、ハードウェア部品の破損または摩耗のシナリオ、ソフトウェアのバグまたはITセキュリティの問題のシナリオなどを含むことができる。
【0035】
いくつかの例では、それぞれのイベントアーティファクト122のインポートは、それぞれのプロデュースアプリ124からそれぞれのイベントアーティファクト122および/または以下に説明するイベント情報126を取得または検索することを可能にするために必要とされ得る接続情報をさらに含み得る。そのような接続性情報は、一例として、それぞれのプロデュースアプリ124と(以下に説明するデータストレージプラットフォーム150などの中間通信参加者を潜在的に含む)最終的には(消費)アプリ120との間の通信接続を確立することを可能にすることがある。
それぞれのイベントアーティファクト122のインポートは、いくつかの例において、それぞれの情報が、アプリ120の開発および/または作成段階の間、あるいは作成されたアプリ120のデプロイメントおよび/または運用の間に使用され得るようなものであってもよい。
【0036】
さらなる例では、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、インポートされたそれぞれのイベントアーティファクト122を使用することにより、アプリ開発UI116を介してアプリ120を開発するようにさらに構成され得る。
【0037】
インポートされたそれぞれのイベントアーティファクト122を使用して、アプリ120は、アプリ120の開発を達成するために、一例として、ADF、IDE、視覚的モデルベース表現、または上述の(ローコード)アプリ開発プラットフォーム118と相互作用し得るアプリ開発UI116を介して開発され得る。ここで、アプリ開発プラットフォーム118は、それぞれのイベントアーティファクト122とともに、エキスパートではないユーザがアプリ120を開発するためにそれぞれのイベントアーティファクト122を使用することをサポートするように容易にすることができる。
【0038】
一例として、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、開発されたアプリ120をターゲットデバイス140にデプロイして実行するようにさらに構成される場合がある。
【0039】
ここで、アプリ120は、このアプリ120をターゲットデバイス140上でアプリユーザが使用できるようにするために必要な活動が行われれば、デプロイされたと理解することができる。アプリのデプロイプロセスは、それらの間の可能な遷移を伴う、いくつかの相互に関連するアクティビティから構成され得る。これらのアクティビティは、プロデューサー側(例えば、アプリ開発者による)またはコンシューマー側(アプリユーザまたはエンドユーザによる)またはその両方で発生する可能性がある。いくつかの例では、アプリ展開プロセスは、少なくともアプリ120のリリースと、アプリ120のインストールおよび起動とから構成され得る。リリース活動は、完了した開発プロセスから続く可能性があり、デプロイメントプロセスではなく開発プロセスの一部として分類されることもある。これは、システム(ここでは、例えば、アプリ開発プラットフォーム118またはオンラインアプリストア)を本番稼動させるコンピュータシステム(ここでは、例えば、アプリ開発プラットフォーム118)に組み立てて転送するために準備するのに必要な操作から構成される場合がある。そのため、システムが許容可能な性能で動作するために必要なリソースを決定し、デプロイメントプロセスの後続のアクティビティを計画および/または文書化することが含まれる場合がある。単純なシステムの場合、アプリ120のインストールは、アプリ120のソフトウェアを(手動または自動で)実行するための何らかの形式のコマンド、ショートカット、スクリプト、またはサービスを確立することを含む場合がある。複雑なシステムの場合、それは、システムの構成-場合によっては、意図されたアプリの使用についてエンドユーザに質問することによって、または、どのように構成されることを望むかを直接尋ねることによって-および/または、すべての必要なサブシステムを使用できるようにすることを含むかもしれない。アクティベーションは、ソフトウェアまたはアプリ120の実行可能なコンポーネントを初めて起動する活動である可能性がある(これは、デジタル著作権管理システムの機能であるソフトウェアライセンスに関するアクティベーションという用語の一般的な使用と混同されないようにする)。アプリ120がそれぞれのターゲットデバイス140にデプロイされると、アプリ(エンド)ユーザのビジネスニーズを満たすためにアプリ120を動作させることができる。
【0040】
いくつかの例では、それぞれのターゲットデバイス140は、スマートフォン、スマートウォッチ、ハンドヘルド、パッド、ラップトップなど、またはデスクトップデバイス、例えばデスクトップコンピュータを含む、または他の「スマート」デバイス、例えばスマートテレビセット、冷蔵庫、家庭用または産業用オートメーションデバイスであってよく、スマートテレビセットは、例えば、統合されたインターネット機能を備えたテレビセット、または現代の基本的なテレビセットよりも高度なコンピューティング能力および接続性を提供するテレビ用のセットトップボックスであってよい。
【0041】
さらに、一例として、それぞれのターゲットデバイス140は、製造オペレーション管理(MOM)システム、製造実行システム(MES)、および企業資源計画(ERP)システム、監視制御およびデータ収集(SCADA)システム、またはそれらの任意の組み合わせであるか、またはそれらで構成され得る。
【0042】
いくつかの例では、アプリ120がデプロイされ実行され得るそれぞれのデバイス140は、別のデバイス144上でデプロイされ実行され得るそれぞれのプロデュースアプリ124のそれぞれのイベントアーティファクト122を使用し得る。他のデバイス144は、いくつかの例では、センサ、電動モータ、バルブまたはロボットなどのアクチュエータ、電動モータに供給するインバータ、ギアボックス、プログラマブルロジックコントローラ(PLC)、通信ゲートウェイ、および/または産業オートメーション製品および産業オートメーション一般に関連する他の部品またはコンポーネントであるか、またはそれらから構成されてもよい。それぞれのターゲットデバイス140は、複雑な生産ラインまたは生産工場、例えば、ボトルファイリング機、コンベア、溶接機、溶接ロボットなどの一部であってもよい。いくつかの例では、他のデバイス144が、センサ/アクチュエータまたは現場レベルなどのオートメーションピラミッドの下位レベルに属する場合、それぞれのターゲットデバイス140は、現場レベルまたは制御レベルなどのオートメーションピラミッドの上位レベルに属することがある。
【0043】
また、いくつかの例では、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、それぞれのイベントアーティファクト122に対応するイベント情報126を、それぞれのプロデュースアプリ124からデータストレージプラットフォーム150にインポートするようにさらに構成される場合があることを理解されたい。
【0044】
いくつかの例では、イベント情報126は、それぞれのイベントアーティファクト122に関連するライブまたは最新の情報とみなすことができ、それによって、それぞれのイベントアーティファクト122は、対応するイベント情報126のフレームワークを形成することができる。イベント情報126は、それぞれのイベントアーティファクト122に関する上記の説明に対応して、一例として、それぞれのプロデュースアプリ124の動作中にイベントがちょうど発生しているときのステータスの特定の変化(開始、停止、完了など)から構成されることがある。
【0045】
上記の小売ドメインの例におけるプロデュースアプリ124の例では、イベント情報126は、顧客の特定の購入注文がちょうど受信された、処理された、停止された、または完了したという情報であるか、またはそのような情報で構成されるかもしれない。いくつかの例では、イベント情報126はさらに、特定の顧客、特定のベンダー、特定の製品、特定の数量、特定の価格、特定の納期など、特定の購入注文に関する情報を含んでいてもよい。また、上記産業環境の例におけるプロデュースアプリ124の例では、イベント情報126は、他のデバイス144の特定の動作状態や故障が発生したばかりであるという情報であってもよいし、そのような情報から構成されていてもよい。これらの例では、イベント情報126は、生産ステップが完了したこと、または特定のエラーシナリオが他のデバイス144に適用されるようになったこと、例えば、壊れたまたは摩耗したハードウェア部品、ソフトウェアバグまたはITセキュリティ問題などの特定の新たな検出、などの情報で構成される可能性がある。
【0046】
それぞれのプロデュースアプリ124からデータストレージプラットフォーム150へのイベント情報126のインポートは、いくつかの例では、それぞれのプロデュースアプリ124によってイベント情報126が生成されるとすぐに行われることがある。これにより、それぞれのイベントアーティファクト122に対応するイベント情報126に関するある種のライブまたは最新の情報が、それぞれのプロデュースアプリ124によって生成される。他の例では、前記インポートは、所定の頻度、例えば、1分または1時間に1回で行われることができ、それにより、それぞれのプロデュースアプリ124は、その後、イベント情報126をデータストレージプラットフォーム150に自動的に送信することができ、またはデータストレージプラットフォーム150は、最近のイベント情報126についてそれぞれのプロデュースアプリ124を能動的にポーリングすることができる。さらに、イベント情報126のインポートは、それぞれのプロデュースアプリ124からデータストレージプラットフォーム150へのイベント情報126のデータ送信として理解され得る。一例として、それぞれのプロデュースアプリ124からデータストレージプラットフォーム150へのイベント情報126の説明されたインポートは、関係する通信参加者、特にそれぞれのプロデュースアプリ124からデータストレージプラットフォーム150までが疎結合にすぎないように、非同期に行われることがある。
【0047】
例として、データストレージプラットフォーム150は、Apache Software Foundationによって開発されたオープンソースのストリーム処理ソフトウェアプラットフォームであるApache Kafkaを含むことができる。Apache Kafkaは、リアルタイムのデータフィードを処理するための、統一された、高スループット、低レイテンシのプラットフォームを提供する。いくつかの例では、Apache Kafkaは、それぞれのプロデュースアプリ124および/またはそれぞれのプロデュースアプリ124が実行されているそれぞれのデバイスよりも近く、より高いスループットおよびより高い可用性を有する可能性がある。それぞれのプロデュースアプリ124からデータストレージプラットフォーム150にイベント情報126をインポートすることは、非同期通信と低レベルの結合を可能にする可能性があることを理解されたい。したがって、データストレージプラットフォーム150の使用は、いくつかの例において、それぞれのプロデュースアプリ124、それぞれのプロデュースアプリ124が実行されているそれぞれのデバイス、(消費)アプリ120および/またはターゲットデバイス140が常に利用可能でない場合、データストレージプラットフォーム150が依然としてイベント情報126の通信およびインポートを可能にするので、特に有利であり得る。また、いくつかの例では、データストレージプラットフォーム150は、イベント情報126に関してデータが破損した場合、またはイベント情報126に関連するイベントが取り消された場合、ロールバックされた場合などに、イベント情報126の部分的または完全なロールバックを可能にすることができることが理解されるべきである。
【0048】
データストレージプラットフォーム150は、例えば、インターネットを介して基本的にどこからでもアクセス可能なクラウドベースのプラットフォームであってもよい。データストレージプラットフォーム150は、例えば、Amazon Web Services、Alibaba、SAP、Googleなどを含む大規模なクラウドコンピューティングプロバイダの1つによってホストされてもよい。あるいは、データストレージプラットフォーム150は、例えば、アーティファクト情報を管理する企業の敷地内にある適切な計算設備を含むオンプレミスプラットフォームであってもよい。ハイブリッド版または仮想プライベートクラウドソリューションも、データストレージプラットフォーム150に対して可能である。いくつかの例では、データストレージプラットフォーム150は、アプリ開発プラットフォーム118またはデータ処理システム100によって構成されるか、アプリ開発プラットフォーム118またはデータ処理システム100に組み込まれる。
【0049】
さらに、プロデュースアプリ124と(消費)アプリ120との間にデータストレージプラットフォーム150を導入する概念は、いくつかの例では、データブローカーまたはメッセージブローカーとして考慮され得ることが理解されるべきである。いくつかの例では、データストレージプラットフォーム150は、メッセージ(ここではイベント情報126)を送信者(ここではそれぞれのプロデュースアプリ124)の正式なメッセージングプロトコルから受信者(ここでは(消費)アプリ120)の正式なメッセージングプロトコルへ翻訳する仲介コンピュータプログラムモジュールとして機能することができる。さらに、プロデュースアプリ124と(消費)アプリ120の間にデータストレージプラットフォーム150を導入する概念は、一例として、メッセージ(ここではイベント情報126)の検証、変換、およびルーティングのためのアーキテクチャパターンとして理解することができる。これは、アプリケーション(ここでは、それぞれのプロデュースアプリ124と(消費)アプリ120)間の通信を仲介し、メッセージを交換できるようにするためにアプリケーションが互いに持つべき相互認識を最小化し、効果的にデカップリングを実装する。
【0050】
一例として、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、データストレージプラットフォーム150にインポートされたイベント情報126を、データストレージプラットフォーム150からデプロイされ実行中のアプリ120に提供するようにさらに構成される場合がある。
【0051】
イベント情報126が、それぞれのプロデュースアプリ124からデータストレージプラットフォーム150にインポートされた後、イベント情報126は、データストレージプラットフォーム150から、デプロイされ実行されている(消費している)アプリ120に提供される(例えば、送信される)ことがある。
【0052】
データストレージプラットフォーム150から(消費)アプリ120へのイベント情報126の提供は、いくつかの例では、イベント情報126がデータストレージプラットフォーム150にインポートされるとすぐに、さらなる例では、イベント情報126がそれぞれのプロデュースアプリ124によって生成されるとすぐに、行われ得る。これにより、それぞれのイベントアーティファクト122に対応するイベント情報126に関するある種のライブまたは最新の情報が、それぞれのプロデュースアプリ124によって生成される。他の例では、前記インポートは、所定の頻度、例えば、1分または1時間に1回で行われてもよく、これにより、データストレージプラットフォーム150は、その後、イベント情報126を(消費)アプリ120に自動的に送信してもよく、または(消費)アプリ120は、最近のイベント情報126についてデータストレージプラットフォーム150を能動的にポーリングしてもよい。一例として、a)それぞれのプロデュースアプリ124からデータストレージプラットフォーム150へ、およびb)データストレージプラットフォームから(消費)アプリ120への2つの通信ステップは、関与する通信参加者、特にそれぞれのプロデュースアプリ124および(消費)アプリ120が緩く結合されるだけであるように、非同期に行われることがある。
【0053】
いくつかの例では、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、提供されたイベント情報126に、デプロイされ実行されているアプリ120によって構成されるアプリアルゴリズム128を適用して、出力データ130を生成するようにさらに構成され得る。
【0054】
アプリ120は、いくつかの例では、所定のビジネスロジックまたはアプリの目的に対応するアプリアルゴリズム128を備える。アプリアルゴリズム128は、出力データ130を生成するためにアプリアルゴリズム128に従って処理される入力データとして、提供されたイベント情報126を受け入れることができる。上記の小売領域の例では、アプリアルゴリズム128は、新しい特定の購入注文を入力データとして受け入れ、この新しい特定の購入注文を処理して出力データ130を生成することができ、この出力データ130は、例えば、購入者に送信され得る請求書の生成をトリガすること、購入された製品の組立をトリガすること、または購入された製品を保管倉庫に収集することを含むことができる。上記の産業環境の例の場合、アプリアルゴリズム128は、新しい、特定の動作ステータスまたはエラーもしくは故障メッセージを入力データとして受け入れ、次に、この新しい、特定の動作ステータスまたは特定のエラーもしくは故障メッセージを処理して、例えば、プロデュースアプリ124によって操作または監視され得る他のデバイス144の次の生産ステップ、シャットダウン、メンテナンス、または修理をトリガすることからなり得る出力データ130を生成することができる。
【0055】
提案されたアプローチは、アプリ120の開発、デプロイメント、および実行のためにユーザが再利用可能な多数のイベントアーティファクト122を提供し得るリポジトリ150(または複数のリポジトリ)などのより多くのデータソースが構成され得ることを含む、いくつかの利点を提供し得る。さらに、提案されたアプローチは、アプリ120が使用されるビジネスまたは産業環境において、より多くの洞察を提供する可能性がある。このより大きな洞察は、イベントトリガによって達成されるかもしれない。イベントトリガは、ビジネスまたは産業環境で既に実行されるかもしれないが、データまたはプロセスの不整合を引き起こすかもしれない手動ステップまたは異なる、潜在的に独立したソフトウェアアプリケーションプログラムを使用して、より大きな程度まで、一連のアクションおよびアクティビティを自動化および最適化するために有益であるかもしれない。したがって、例えば、非同期通信を可能にしたり、計算や通信の作業負荷を複数のアプリケーション120間で分散させたりすることによって、提案されたアプローチを使用して、より高い可用性と信頼性を達成することもできる。提案されたアプローチのさらなる利点は、その単純さゆえに、IT専門家でない、例えば、ローコードアプリ開発に依存する、またはローコードアプリ開発を好む、いわゆる市民ユーザが利用できる可能性があることである。
【0056】
また、提案されたアプローチは、アプリ120を開発またはデプロイして実行するユーザから、バージョン管理やペイロード管理などの統合の複雑さを隠す魅力を有することも理解されるべきである。同時に、提案されたアプローチは、例えば、異なるプロデュースアプリ124からのイベントアーティファクト122を、アプリ120に具現化された、またはアプリ120によって構成されたビジネスロジックまたはアプリアルゴリズム128と結合する可能性を提供することによって、より複雑なことを可能にし、より複雑なことを簡単な方法で管理することさえできる。いくつかの例では、N-1通信は、異なるプロデュースアプリ124から、または同じもしくは異なるプロデュースアプリ124が実行されている異なる他のデバイス144から、対応するイベントアーティファクト122をインポートすることによって、ユーザによって便利にセットアップされ得る。さらなる例では、N-N通信でさえ、対応するイベントアーティファクト122が異なるプロデュースアプリ124から、または同じもしくは異なるプロデュースアプリ124が実行されている異なる他のデバイス144からインポートされ得る2つ以上の(異なる)(消費)アプリ120を開発することによって、ユーザによって実現され得る。また、提案されたアプローチは、新しいタイプの複雑なまたはプロセスを可能にする可能性があり、例えば、承認電子メールを回避することによって、多くのプロセスを簡素化する可能性がある。
【0057】
いくつかの例では、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、生成された出力データ130をターゲットデバイス140のユーザインタフェース142を介してターゲットデバイス140のユーザに表示させるようにさらに構成され得る。
【0058】
この目的のために、ターゲットデバイス140は、例えば、ターゲットデバイス140のディスプレイデバイス(ディスプレイスクリーンなど)上に表示されるユーザインタフェース142を構成することができる。この文脈において、ターゲットデバイス140は、例えば、スマートフォン、またはPLC、インバータなどの産業オートメーション製品、または複雑な生産ラインもしくは生産プラントの一部、例えば、ボトルファイリング機、コンベヤ、溶接機、溶接ロボットなどによって具現化され得る。
【0059】
生成された出力データ130は、ユーザインタフェース142を介してターゲットデバイス140の(エンド)ユーザに表示され、例えば、このユーザが、ターゲットデバイス140またはターゲットデバイス140に接続されている別のデバイス144の次の生産ステップ、シャットダウン、メンテナンスまたは修理をトリガするなどのさらなるアクションをトリガすることを可能にする。
【0060】
それぞれのターゲットデバイス140は、生成された出力データ130を表示するように、例えばアプリ開発プラットフォーム118によって、またはデプロイされ実行されているアプリ120によって、引き起こされるまたはトリガされる可能性がある。
【0061】
さらなる例では、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、生成された出力データ130を、ターゲットデバイス140またはターゲットデバイス140に接続された別のデバイス144を分析、監視、操作および/または制御するために使用させるように、および/または生成された出力データ130を使用してそれぞれのターゲットデバイスの140ユーザを分析および/または監視させるように、さらに構成され得る。
【0062】
それぞれのターゲットデバイス140または他のデバイス144は、生成された出力データ130を使用して、分析、監視、操作および/または制御され得る。いくつかの例では、ターゲットデバイス140または他のデバイス144を分析、監視、操作および/または制御する動作は、アプリ開発プラットフォーム118、ターゲットデバイス140または他のデバイス144によって実行され得る。したがって、例えば、アプリ開発プラットフォーム118は、ターゲットデバイス140または他のデバイス144を監視または制御することができる。さらに、一例として、ターゲットデバイス140は、他のデバイス144を分析または制御することができる。これは、いくつかの例では、ターゲットデバイス140または他のデバイス144を分析、監視、操作および/または制御するために有用または必要とされ得るデータおよび情報から構成され得る、適切なイベントアーティファクト122および対応する適切なイベント情報126によって可能にされ得る。
【0063】
一例として、アプリ開発プラットフォーム118またはターゲットデバイス140は、例えば、アプリ開発プラットフォーム118またはデプロイされ実行されているアプリ120によって、ターゲットデバイス140または他のデバイス144を分析、監視、操作および/または制御するように引き起こされるか、またはトリガされる可能性がある。
【0064】
また、いくつかの例では、プロデュースアプリ124は他のデバイス144上で展開され実行され、他のデバイス144は、生成された出力データ130を使用して、アプリ開発プラットフォーム118またはターゲットデバイス130によって分析、監視、操作および/または制御され得ることが理解されるべきである。
【0065】
さらなる例では、アプリ開発プラットフォーム118またはターゲットデバイス140はまた、生成された出力データ130を使用してターゲットデバイス140のユーザを分析し、/監視するために、例えばアプリ開発プラットフォーム118によって、またはデプロイされ実行されているアプリ120によって、引き起こされ、またはトリガされてもよい。そのようなより外来的な例では、ターゲットデバイス140は、スマートフォン、スマートウォッチ、ハンドヘルド、パッド、ラップトップなどであってもよく、またはそれらから構成されてもよく、他のデバイス144は、人間、例えば、それぞれのターゲットデバイス140のエンドユーザ、または動物もしくは植物であってもよく、人間、動物または植物の健康、行動などが、アプリ120を使用して分析または監視され得る。いくつかの例では、言及されたステップは、アプリ開発プラットフォーム118によって直接実行され得る。
【0066】
また、いくつかの例では、それぞれのイベントアーティファクト122は、少なくとも1つのイベント通知および/または少なくとも1つのイベント搬送状態転送から構成されることも理解されるべきである。
【0067】
イベント通知とイベントによってもたらされる状態移行の文脈では、ウェブサイトhttps://martinfowler.com/articles/201701-event-driven.html
が参照される。
【0068】
いくつかの例では、システム(ここではプロデュースアプリ124またはデータストレージプラットフォーム150)が、他のシステム(ここではデータストレージプラットフォーム150または(消費)アプリ120)にそのドメインの変更を通知するためにイベントメッセージ(ここではイベント情報126)を送信するときに、イベント通知が発生することがある。イベント通知の重要な要素は、送信元システムが送信されたメッセージに対する応答を期待しないことである。一例として、イベント通知の受信者が返信する場合、イベントを送信するロジックフローと、そのイベントに対する何らかの反応に応答するロジックフローとの間には、顕著な分離があるかもしれない。イベント通知のアプローチは、一方ではプロデュースアプリ124と、他方ではデータストレージプラットフォーム150または(消費)アプリ120との間の低レベルの結合を意味するので、有利である可能性がある。
【0069】
一例として、クライアントが更なる作業を行うためにソースシステム(ここではプロデュースアプリ124またはデータストレージプラットフォーム150)に連絡する必要がないような方法で、システムのクライアント(ここではデータストレージプラットフォーム150または(消費)アプリ120)を更新するために、イベント搬送状態転送が使用されるかもしれない。例えば、顧客管理システムは、顧客がその詳細(住所など)を変更するたびに、変更されたデータの詳細を含むイベントを送信する。受信者は、顧客データのコピーをその変更で更新することができる。イベントキャリーステート転送のアプローチでは、顧客システムが利用できない場合、または利用できなくなった場合でも、受信側システムが機能する可能性があるため、より高い耐障害性を実現できる可能性がある。顧客情報へのアクセスにリモートコールを必要としないため、待ち時間が短縮される可能性がある。データストレージプラットフォーム150の使用により、すべての状態を最新に保つという課題が解決され、必要なときに積極的に送信者を呼び出して詳細情報を得る必要がなくなる可能性がある。
【0070】
さらに、イベント通知またはイベント搬送された状態転送を構成するそれぞれのイベントアーティファクト122は、イベント通知、イベント搬送された状態転送、またはそのようなタイプの情報を特徴付けまたは記述する情報の一部を構成することができるように理解することができる。特定のイベント通知またはイベント搬送された状態遷移は、例えば、ハードウェア部品の破損または摩耗、ソフトウェアのバグまたはITセキュリティ問題のシナリオなどの特定の操作またはエラーシナリオに関連し、イベント情報126に対応することができる。
【0071】
いくつかの例では、それぞれのイベントアーティファクト122は、それぞれデプロイされ、実行されているプロデュースアプリ124からの少なくとも1つのイベントアーティファクト122を含むそれぞれのイベントチャネル132から構成される。
【0072】
イベントチャネル132は、いくつかの例では、相関するイベントアーティファクト122の束として理解されるかもしれず、この相関するイベントアーティファクト122の束は、再びイベントアーティファクト122かもしれない。いくつかのソフトウェアアーキテクチャでは、イベントチャネル132はトピックに類似しているかもしれない。イベントチャネル132の使用は、例えば、アプリ開発目的のためにイベントアーティファクト122をインポートすることを容易にするかもしれないし、それぞれのプロデュースアプリ124からデータストレージプラットフォーム150、そして最終的には(消費)アプリ120へのイベント情報126のルーティングを容易にするかもしれない。いくつかの例では、このようなイベントチャネル132を作成することは、相関するイベントアーティファクト122およびイベント情報126を収集および管理することを容易にする可能性があることが理解されるべきである。
【0073】
上記の小売領域の例では、イベントチャネル132は、1つ(または複数)の特定の製品に関連するすべての注文、または購入、請求、出荷情報など、1つ(または複数)の特定の購入者に関連するすべての情報をバンドルすることができる。上記の産業環境の例では、イベントチャネル132は、1つ(または複数)の特定のマシン(複数)またはデバイス(複数)に関連するすべてのイベント、または1つ(または複数)の特定のエラーシナリオ(複数)の発生に関連するすべての情報をバンドルすることができる。
【0074】
いくつかの例では、それぞれのイベントチャネル132は、上記で説明したイベント通知および/またはイベント搬送状態転送で構成されることがある。さらなる例では、それぞれのイベントチャネル132は、1つ以上のイベント通知(複数可)のみから構成されることがある。また、他の例では、それぞれのイベントチャネルは、1つまたは複数のイベント搬送状態転送(複数可)から構成されてもよい。ここで、場合によっては、最新の状態を追跡することが容易になるため、1つのイベント搬送状態転送のみを使用することが望ましい場合がある。それにもかかわらず、他のケースでは、例えば、特定の購入者のような同じトピックに関連するが、この特定の購入者に関する注文ステータスの変更と請求情報の変更のような互いに干渉しないイベントまたは状態遷移を追跡するために、2つ以上のイベント搬送状態遷移を使用することができる。
【0075】
一例として、それぞれのイベントチャネル132は、それぞれのプロデュースアプリ124の開発者またはユーザによって定義または管理され得る。消費)アプリ120を開発または実行するユーザは、アプリ開発中にそれぞれのイベントチャネル132をインポートし、(消費)アプリ120の実行中にそれぞれのイベントチャネル132によって提供される情報を消費することができる。
【0076】
さらなる例では、それぞれのイベントチャネル132は、デプロイされ実行中のプロデュースアプリ124からの少なくとも1つのイベントアーティファクト122と、少なくとも第2の、デプロイされ実行されているプロデュースアプリ124’からの少なくとも1つのイベントアーティファクト122’をさらに含むことがある。
このようなイベントチャネル132を作成することは、異なるプロデュースアプリ124、124’から、および/またはそれぞれのプロデュースアプリ124、124’がデプロイされ実行され得る異なる他のデバイス144、144’から発信される、相関するイベントアーティファクト122、122’およびイベント情報126、126’を収集し管理することを容易にし得る。イベントチャネル132の概念は、より複雑なシナリオを管理することを可能にし得るが、イベントチャネル132もまた、アプリ120を開発するためにユーザによってインポートされ得るので、この複雑さは、アプリ120を開発する非IT専門家によって依然として都合よく処理され得る。
この目的のために、いくつかの例では、同じまたは異なるプロデュースアプリ124、124’は、a)同じ他のデバイス144上で、しかし例えば、他のデバイス144の異なるソフトウェア環境で、および/またはb)異なる他のデバイス144、144’上でデプロイされ、実行され得る。次に、いくつかの例では、それぞれの、生産的なソフトウェア環境(同じ他のデバイス144上、または異なる他のデバイス144、144’上のいずれか)でデプロイされ実行されるそれぞれのプロデュースアプリ124、124’に対して、それぞれのイベントチャネル132がセットアップされ得る。さらに、いくつかの例では、これらのプロデュースアプリ124、124’の2つ以上のイベントアーティファクト122が、組み合わされたイベントチャネル132に組み合わされることがある。
【0077】
既に上述したように、イベントチャネル132は、いくつかの例では、それぞれのプロデュースアプリ124、124’の開発者またはユーザによって定義または管理され得る。消費)アプリ120を開発または実行するユーザは、アプリ開発中にそれぞれのイベントチャネル132をインポートし、(消費)アプリ120の実行中にそれぞれのイベントチャネル132によって提供される情報を消費することができる。
【0078】
また、いくつかの例では、プロデュースアプリ124の修正時に、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、元のプロデュースアプリ124のそれぞれのイベントアーティファクト122の継続的な使用または修正されたプロデュースアプリ124’’のそれぞれの修正されたイベントアーティファクト122の使用開始に対応する少なくとも2つのオプション134をユーザに表示すること、表示されたオプション134のうちの1つを選択するユーザの意図を捕捉すること、およびユーザが修正されたプロデュースアプリ124’’のそれぞれのイベントアーティファクト122の使用開始を選択した場合に、修正されたプロデュースアプリ124’’のそれぞれのイベントアーティファクト122の使用を開始するように構成され得ることが理解されるべきである、それぞれのイベントアーティファクト122に対応するイベント情報126を、それぞれの修正プロデュースアプリ124’’からデータストレージプラットフォーム150にインポートする。
【0079】
それぞれのプロデュースアプリ124の開発者は、一例として、それぞれのプロデュースアプリ124の入力パラメータまたはソース、ビジネスロジック、および/または出力パラメータまたはターゲットを修正することによって、それぞれのプロデュースアプリ124に修正を加えることができる。この目的のために、それぞれのプロデュースアプリ124の開発者は、開発段階に再び入り、対応する修正を行い、それぞれの修正されたプロデュースアプリ124’’を作成することができる。そのようなそれぞれの修正されたプロデュースアプリ124’’が開発されると、それはそれぞれのデバイス144上でデプロイされ、実行され得る。このような修正は、一例として、それぞれのプロデュースアプリ124の出力として生成され得るイベントアーティファクト122にも影響を及ぼす可能性がある。従って、それぞれの修正されたイベントアーティファクト122’’および(該当する場合)それぞれの修正されたイベント情報126’’は、それぞれの修正されたプロデュースアプリ124’’の出力として生成される。修正されたイベントアーティファクト122’’および-該当する場合-それぞれの修正されたイベント情報126’’は、例えば、それぞれのタイプおよび/またはフォーマットにおいて、元のイベントアーティファクト122および-該当する場合-それぞれのイベント情報126と異なる場合がある。
【0080】
プロデュースアプリ124の修正時に、少なくとも2つのオプション134がユーザに表示されることがあり、それによってユーザはアプリ120の開発者であっても、デプロイされ実行中のアプリ120のユーザであってもよいことが理解されるべきである。オプション134は、例えば、アプリ開発UI116を介して開発者に、またはターゲットデバイス140のユーザインタフェース142を介してデプロイされ実行中のアプリ120のユーザに、それぞれのユーザに表示され得る。利用可能で表示されたオプション134は、元のプロデュースアプリ124のそれぞれのイベントアーティファクト122の使用を継続すること、またはそれぞれの修正されたプロデュースアプリ124’’のそれぞれの(該当する場合:修正された)イベントアーティファクト122(’’)の使用を開始することを含み得る。
【0081】
このユーザは、次に、例えば、それぞれのユーザインタフェース(開発者のためのアプリ開発UI116、デプロイされ実行中のアプリ120のユーザのためのターゲットデバイス140のユーザインタフェース142)と対話することによって、表示されたオプション134の1つを選択することができる。いくつかの例では、ユーザがそれぞれの修正されたプロデュースアプリ124’’のそれぞれの(該当する場合:修正された)イベントアーティファクト122(’’)の使用を開始することを選択した場合、それぞれの(該当する場合:修正された)イベントアーティファクト122(’’)に対応するイベント情報126は、それぞれの修正されたプロデュースアプリ124’’からデータストレージプラットフォーム150にインポートされ得る。このイベント情報126は、その後、データストレージプラットフォーム150からデプロイされ実行されているアプリ120に提供され得る。
【0082】
いくつかの例では、それぞれのプロデュースアプリ124、124’’の開発者またはユーザは、有用なイベントアーティファクト122、122’’および/またはイベント情報126、126’’がコンシューム120に依然として提供され得ることをチェックまたは確認する必要があるかもしれない。これは、いくつかの例では、イベントアーティファクト122、122’’および/またはイベント情報126、126’’のコンテンツ、タイプまたはフォーマットに関係するかもしれない。さらなる例では、それぞれのプロデュースアプリ124、124’’の開発者またはユーザは、それぞれのプロデュースアプリ124に修正がなされたことを示し、a)元のプロデュースアプリ124のそれぞれのイベントアーティファクト122の継続使用、またはb)修正されたプロデュースアプリ124’’のそれぞれの修正されたイベントアーティファクト122の使用開始、の少なくとも2つのオプション134の間で選択するための申し出または選択肢を提供する必要があるかもしれない。さらなる例では、アプリ開発プラットフォーム118は、それぞれのプロデュースアプリ124の修正を決定し、アプリ120のユーザに言及されたオプション134を提供することができ、これにより、このユーザは、アプリ120の開発者またはデプロイされ実行されているアプリ120のユーザであることができる。
【0083】
いくつかの例において、ユーザが、それぞれのプロデュースアプリ124のそれぞれのイベントアーティファクト122と互換性のない、それぞれの修正プロデュースアプリ124’’のそれぞれのイベントアーティファクト122の使用を開始することを選択した場合、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、それぞれの修正プロデュースアプリ124’’のそれぞれのイベントアーティファクト122をアプリ開発UI116にインポートするようにさらに構成され得ることがさらに理解されるべきである; インポートされたそれぞれの修正プロデュースアプリ124’’のそれぞれのイベントアーティファクト122を使用して、アプリ開発UI116を通じてアプリ120を開発し、開発されたアプリ120をターゲットデバイス140にデプロイして実行する。
【0084】
いくつかの例では、それぞれの修正されたプロデュースアプリ124’’のそれぞれのイベントアーティファクト122が、それぞれの(オリジナルの)プロデュースアプリ124のそれぞれのイベントアーティファクト122とまだ互換性があるかどうかの判定が実行される。この判定は、例えば、イベントアーティファクト122、122’’および/またはイベント情報126、126’’のコンテンツ、タイプまたはフォーマットを考慮に入れることができる。それぞれの修正プロデュースアプリ124’’のそれぞれのイベントアーティファクト122が、それぞれの(オリジナルの)プロデュースアプリ124のそれぞれのイベントアーティファクト122と互換性がない場合、それぞれの修正プロデュースアプリ124’’のそれぞれのイベントアーティファクト122は、アプリ開発UI116にインポートされ得る。その後、アプリ120は、インポートされたそれぞれの修正プロデュースアプリ124’’のそれぞれのイベントアーティファクト122を使用して、アプリ開発UI116を通じてアプリ120を(再)開発することによって更新され得る。更新されたアプリ120は、その後、ターゲットデバイス140上にデプロイされ、実行され得る。
【0085】
アプリ120を更新することは、いくつかの例では、イベントアーティファクト122を構成するアプリ120の可用性、信頼性、および回復力を高めることに寄与する可能性がある。
【0086】
いくつかの例では、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、アプリ開発に使用可能なイベントアーティファクト122を格納するためのリポジトリ152で検索するためのイベントアーティファクト検索UI136をユーザに提供するようにさらに構成される場合がある。
【0087】
いくつかの例では、利用可能なイベントアーティファクト122のリポジトリ150は、米国カリフォルニア州サンフランシスコのGitHub, Inc.によって提供されることがある。他の例では、イベントアーティファクト122のリポジトリ150は、アプリ開発プラットフォーム118またはデータ処理システム100によって構成される場合がある。リポジトリ150は、アプリ120を開発するユーザによって、リポジトリ150で利用可能であり、ユーザのビジネスニーズに関連または適合し得る、またはアプリ120の開発を簡略化またはスピードアップし得るイベントアーティファクト120について検索され得る。利用可能な場合、リポジトリ150で利用可能な少なくとも1つの適切なイベントアーティファクト122が、選択のためにイベントアーティファクト検索UI136を介してユーザに表示されることがある。ユーザは、イベントアーティファクト検索UI136と対話し、選択を行い、表示されたイベントアーティファクト122をインポートし、このイベントアーティファクト122をアプリ開発に使用する意思を示すことができる。
【0088】
いくつかの例では、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、生成された出力データ130に関連する情報をイベントアーティファクト122として、アプリ開発のために再利用可能なイベントアーティファクト122のリポジトリ152に格納するようにさらに構成され得る。
【0089】
一例として、リポジトリ152は、上記で説明したリポジトリ152であってもよい。リポジトリ152に格納される情報は、アプリアルゴリズム128またはアプリ120によって生成された出力データ130に関連する可能性があり、それによって、出力データ130は、出力データ130がさらなるアプリを開発するためのイベントアーティファクト122として再利用するのに適しているように、処理、抽象化、または一般化される可能性がある。出力データ130のそのような一般化は、いくつかの例では、アプリアルゴリズム128またはアプリ120によって生成され得る出力データ130のコンテンツ、タイプまたはフォーマットを抽出することから構成され得る。したがって、出力データ130から導出されるイベントアーティファクト122は、いくつかの例では、出力データ130の特定の値または結果から構成されるのではなく、出力データ130が有する可能性のあるコンテンツ、タイプまたはフォーマットを反映する。
【0090】
さらなる例では、出力データ130、特に出力データ130の特定の値または結果は、対応するイベント情報126として他のアプリに(例えば、データストレージプラットフォーム150を介して)提供され得る。
【0091】
イベントアーティファクト122としての出力データ130の再利用を可能にする、出力データ130の適切な処理、抽象化、または汎化は、いくつかの例では、アプリ120の開発者またはユーザによって定義または管理され得る。このイベントアーティファクト122を消費する可能性のある他のアプリを開発または実行するユーザは、アプリ開発中にこのイベントアーティファクト122をインポートし、他のアプリの実行中にアプリ120によって提供される情報を消費することができる。
【0092】
いくつかの例では、出力データ130は、アプリ120がターゲットデバイス140上で正常にデプロイされ実行された場合、および任意選択で、生成された出力データ130が検証された場合にのみ、イベントアーティファクト122としてリポジトリ152に格納され得る。生成された出力データ130の検証は、例えば、生成された出力データ130を、期待される出力データ130と、または期待されるイベントアーティファクト122(または任意選択で期待されるイベント情報126)と、それぞれ類似のシナリオと比較して成功した比較を含んでよい。この比較は、一例として、出力データ130またはイベントアーティファクト122(または任意に期待されるイベント情報126)の内容、タイプまたはフォーマットをそれぞれ考慮に入れることができる。リポジトリ152に保存されたイベントアーティファクト122は、その後、リポジトリ152において検索可能であり、例えば他のユーザが他のアプリ120を開発するためにインポートすることができる。
【0093】
また、さらなる例では、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、a)サードパーティアプリからのイベントアーティファクト122、またはb)サードパーティアプリからの生成された出力データ130に関連する情報を、アプリ開発のために再利用可能なイベントアーティファクト122のリポジトリ152に格納するようにさらに構成されてもよいことが理解されるべきである。例として、サードパーティアプリからのイベントアーティファクト122またはサードパーティアプリからの生成された出力データ130に関連する情報は、イベントアーティファクト122またはサードパーティアプリからの情報がさらなるアプリを開発するためのイベントアーティファクト122として再利用するのに適するように、処理、抽象化、または一般化されることがある。
【0094】
さらなる例では、アプリケーションソフトウェアコンポーネント106および/またはプロセッサ102は、それぞれのプロデュースアプリ124からのそれぞれのイベントアーティファクト122に対応するそれぞれのイベント情報126を検証し、それぞれのイベント情報126が検証された場合にのみ、それぞれのプロデュースアプリ124からのそれぞれのイベントアーティファクト122に対応するそれぞれのイベント情報126をデータストレージプラットフォーム150にインポートするようにさらに構成され得る。
【0095】
それぞれのイベント情報126の検証は、例えば、類似のシナリオと比較することにより、それぞれのイベント情報126とそれぞれの予想されるイベント情報126との比較を成功させることからなる。比較は、一例として、それぞれのイベント情報126の内容、タイプもしくはフォーマット、またはそれぞれのイベント情報126の特定の値もしくは結果を考慮に入れることができる。また、いくつかの例では、検証は、それぞれのイベント情報126の基礎となるイベントが正常に完了したかどうか、すなわち、例えば、イベントがロールバックまたは取り消されなかったかどうかをチェックすることを含んでいてもよいことが理解されるべきである。いくつかの例では、イベントが正常に完了したかどうかのこのチェックは、イベントのロールバックまたは失効が十分に起こり得なくなるか、または除外され得る所定の期間の後にのみ、それぞれのイベント情報126が検証され得ることから構成され得る。さらなる例では、イベントの正常終了の確認は、第2の独立したデータソース、例えば、イベントの正常終了を確認することができるユーザまたは別のアプリによって、イベントの正常終了を確認することから構成されることがある。
【0096】
いくつかの例では、それぞれのイベント情報126の検証は、データの完全性を保証するための方法であるライトアヘッドロギング(WAL)によってサポートされることがある。簡単に言うと、WALの中心概念は、データファイル(テーブルとインデックスが存在する、例えば、それぞれのイベント情報126)への変更は、それらの変更がログに記録された後、つまり、変更を記述するログレコードが永久ストレージデバイスにフラッシュされた後にのみ、書き込まれなければならないということである。このアプローチは、プロデュースアプリ124またはオプションでデータストレージプラットフォーム150がクラッシュした場合に、ログを使用してクラッシュのために失われたデータを回復することを可能にする可能性がある。
【0097】
いくつかの例では、それぞれのイベント情報126は、それぞれのイベント情報126が検証された場合にのみ、それぞれのプロデュースアプリ124からデータストレージプラットフォーム150にインポートされ得る。すなわち、これらの例では、それぞれのイベント情報126が(まだ)検証されていない場合、それぞれのイベント情報126は、それぞれのプロデュースアプリ124からデータストレージプラットフォーム150に(まだ)インポートされない可能性がある。
【0098】
図1に示されるように、(消費)アプリ120は、構成されたアプリアルゴリズム128とともに、アプリ開発プラットフォーム118のデータストア108に格納される場合がある。さらに、アーティファクト情報122および任意選択でイベント情報126がデータストア108に格納される場合がある。ここで、イベントアーティファクト122は、アプリ開発プラットフォーム118によってサポートされるアプリ120を開発する目的のために使用され得る。アプリ120は、一例として、ターゲットデバイス140上にデプロイされ、実行され得る。イベントアーティファクト122に対応するイベント情報126は、他のデバイス144上でデプロイされ実行されているプロデュースアプリ124に由来する場合がある。イベント情報126は、まず、プロデュースアプリ124からデータストレージプラットフォーム150にインポートされ、その後、ターゲットデバイス140上でデプロイされ実行されているアプリ120にイベント情報126を提供することができる。このデータストレージプラットフォーム150からのイベント情報126の提供は、データストレージプラットフォーム150から、ターゲットデバイス140上でデプロイされ実行されている(消費する)アプリ120に直接行われるか、または、アプリ開発プラットフォーム118からなる中間ステップで行われるかのいずれかであり、イベント情報126は、最初にデータストレージプラットフォーム150からアプリ開発プラットフォーム118に提供され、その後、アプリ開発プラットフォーム118から、ターゲットデバイス140上でデプロイされ実行されている(消費する)アプリ120に提供される。
【0099】
ターゲットデバイス140は、提供されたイベント情報126に対して、アプリ120の実行中にアプリアルゴリズム128を適用し、出力データ130を生成することができる。
【0100】
説明したアプリケーション・ソフトウェア・コンポーネント106および/またはプロセッサ102は、アプリ120を管理する類似の方法、特にイベントアーティファクト122を含むアプリ120を開発する類似の方法を実行することができることを理解されたい。
【0101】
さらに、コンピュータプログラム製品162を含んでいてもよいコンピュータ可読媒体160が
図1に示されており、コンピュータプログラム製品162は、実行されるとデータ処理システム100または/およびアプリ開発プラットフォーム118に説明した方法を実行させる実行可能命令で符号化されていてもよい。
【0102】
いくつかの例では、提案される方法は、作成されるアプリ120および/または作成されるアプリ120の機能性を記述または特徴付けるモデルが使用され得る、モデルベースのアプリ開発を含み得る。同様に、それぞれデプロイされ実行されているプロデュースアプリ124は、作成されるアプリ120のモデルとは異なる可能性のあるそれぞれのモデルを含む可能性がある。一例として、それぞれのモデルは、上述の、それぞれのイベントアーティファクト122、イベント情報126、またはより一般的な情報オブジェクトを含むことがあり、これらのイベントアーティファクト122または情報オブジェクトは、特定のプロパティを有することがある。さらにモデルは、アプリアルゴリズム128を含むか、またはアプリアルゴリズム128によって表される。このモデルは、例えば、アプリのページを含むことがあり、ページは、それぞれのイベントアーティファクト122または情報オブジェクト140または情報オブジェクト140から導出された情報、例えば、イベント情報126などの情報をアプリユーザに表示する役割を果たすことがある。さらなる例では、このモデルは、ワークフロー、例えば、イベントアーティファクト122、イベント情報126、または情報オブジェクトに関連するデータを処理するためのルーチン、またはアプリユーザと対話するためのルーチンを含み得る。いくつかの例では、ワークフローは、モデルの一部であるイベントアーティファクト122、イベント情報126、または情報オブジェクト140の間に関係またはポインタを作成する。このモデルは、一例として、要素のプロパティを記述することができるメタモデルを含むことができ、オブジェクトは要素のインスタンスであり、これらのオブジェクトは、上記のイベントアーティファクト122、イベント情報126または情報オブジェクト140に含まれることができる。
【0103】
ここで、要素のプロパティを記述するメタモデルの例を以下に示す。
【0104】
列挙とは、いくつかのEnumerationValueから構成される文書のことで、各値は名前と、Textオブジェクトによって記述されたキャプションを持ち、名前によって画像を参照する。
【0105】
プロパティには4種類ある:
1. プリミティブ値プロパティ:プロパティ値は整数や文字列などのプリミティブ型である。上の例の'name'を参照のこと。
2. プリミティブ・リスト・プロパティ:プロパティ値はプリミティブ型の値のリストである。例えば、列の幅のリストである。
3. オブジェクト値プロパティ:プロパティ値は含まれるオブジェクトである。上の例の'caption'を参照のこと。Textオブジェクトは翻訳可能なテキストを表し、翻訳をリストする他のオブジェクトを含む。
4. オブジェクト・リスト・プロパティ:プロパティは、含まれるオブジェクトのリストを含む。上の例の'values'を参照。
【0106】
モデルベースのアプリ開発と、イベントアーティファクト122を構成するアプリを開発するためにモデルを考慮に入れることは、様々な利点を提供する可能性がある。このモデルは、例えば、標準的なUML表記法およびオブジェクト指向の原則に基づく、例えば、抽象化されたリレーショナルデータベースとして理解され得るドメインモデルを含み得る。言い換えれば、ドメインモデルは、アプリ120またはそれぞれデプロイされ実行中のプロデュースアプリ124が含む、または構成されるデータの視覚的表現であってもよい。アプリケーション開発に対するこのような視覚的アプローチは、アプリ120を機敏に構築し、アプリ120を迅速に構築し、時間をかけて成長させることを可能にするので、特に有利である。ドメインモデルは、一例として、オブジェクトを表すエンティティ、プロパティおよび値をエンティティに割り当てる属性、およびエンティティが互いに通信することを可能にする関連付けの3つの主要要素を含むか、またはこれらから構成される。関連は、一例として、上述のポインタと等価である。
【0107】
モデルまたはドメインモデルの構造は、イベントアーティファクト122、イベント情報126、情報オブジェクト、モデルおよび/またはドメインモデルを格納するためのデータベースがどのように見えるかを決定することができる。各エンティティはデータベースのテーブルになる可能性があり、各属性はデータベースの列になる可能性がある。データベースに格納されたすべてのオブジェクト(たとえば、トレーニングコース)は、対応するデータベーステーブルの行になる可能性がある。これは、ドメインモデルにないものはデータベースに追加できないことを意味する。
【0108】
例えば、エンティティ「トレーニングコース」のデータベーステーブルは、以下の属性を持つ。
このトレーニングコースのトレーニングイベントが複数予定されている場合、次のようになる。
ここで、IDは属性ではなく、上述した一意の識別子であってもよい。一意な識別子は、すべてのオブジェクト、例えばイベントアーティファクト122、イベント情報126、または情報オブジェクトが、常に一意な識別子(ID)を持ち、システムがどのオブジェクトであるかを知ることができるようにする。
【0109】
モデルおよび/またはドメインモデルへの変更は何度でも行うことができ、アプリ120が再び公開されるときにデータベースが同期される。例えば、エンティティや属性、一般に情報オブジェクトの名前が変更されても、対応する一意の識別子のおかげで、アプリ120は動作する。
【0110】
上述したように、モデルは、アプリ120が含むまたは構成されるデータの視覚的表現を含むことができる。これは、例えば、モデルが、作成されるアプリ120の機能性を特徴付ける全ての情報を含み得ることを意味する。したがって、モデルは、アプリを開発するユーザの最も重要な作業結果および中核的な知的財産の1つと考えることができる。したがって、モデルを保護し、それぞれのイベントアーティファクト122/およびイベント情報126をアプリ開発UI116にインポートし、任意でアプリ120のモデルまたはアルゴリズム128にインポートする際に、モデルを「壊さない」ようにすることが非常に重要である。
【0111】
つまり、一言で言うと、提案する方法は、例えば、以下の特徴の少なくとも1つ、またはそれらの任意の組み合わせを含むモデルベースのアプリ開発を含むことができる:
作成されるアプリ120は、第1のモデルの少なくとも一部を含み、第1のモデルは、作成されるアプリ120および/または作成されるアプリ120の機能性を特徴付け、
第1のモデルは、任意で、エンティティ、エンティティにプロパティと値を割り当てる属性、およびエンティティが互いに通信することを可能にする関連付けの少なくとも1つ、またはそれらの任意の組み合わせを含むことができ、エンティティは、イベントアーティファクト122、イベント情報126、または情報オブジェクトを表し、
第1のモデルは、イベントアーティファクト122、イベント情報126、情報オブジェクト、またはアプリ120のページに関連するデータを処理するためのワークフローを任意で含むことができ、
前記ページは、任意で、イベントアーティファクト122、イベント情報126、または情報オブジェクト、またはイベントアーティファクト122、イベント情報126、または情報オブジェクトから派生した情報をアプリユーザに表示する役割を果たすことができ、
それぞれデプロイされ実行中のプロデュースアプリ124は、任意選択で、第2のモデルの少なくとも一部を含むことができ、第2のモデルは、任意選択で、第1のモデルと同様の特性またはアーキテクチャを少なくとも一部に有することができ、第1のモデルは、任意選択で、第2のモデルとは少なくとも一部が異なることができ、
提案された方法がモデルベースのアプリ開発を含むいくつかの例では、それぞれデプロイされ実行中のプロデュースアプリ124と作成されるアプリ120は、例えば、異なるモデルを含み得る分散アプリとして理解され得る。そのため、ある意味で、提案されるアプリ120の開発は、分散アプリケーションのモデリングを含めることができる。
【0112】
図2を参照すると、アプリ120、特にイベントアーティファクト122を含むアプリ120の管理を容易にする、別の例のコンピュータシステムまたはデータ処理システム100の機能ブロック図が示されている。
【0113】
図2に示されるように、アプリ120はターゲットデバイス140上でデプロイされ実行される可能性があり、アプリ開発プラットフォーム118はターゲットデバイス140上でアプリ120を実行することをサポートする。イベント情報126は、プロデュースアプリ124からデータストレージプラットフォーム150にインポートされる場合があり、データストレージプラットフォーム150は、イベント情報126をアプリ120に提供する場合がある。この場合、イベント情報126はアプリ開発プラットフォーム118に提供され、アプリ開発プラットフォーム118は、提供されたイベント情報126上でアプリ120の実行中にアプリアルゴリズム128を適用して出力データ130を生成することができる。
【0114】
図3を参照すると、アプリ120、特にイベントアーティファクト122を含むアプリ120の管理を容易にする、さらなる例のコンピュータシステムまたはデータ処理システム100の機能ブロック図が示されている。
【0115】
図3に示されるように、プロデュースアプリ124とコンシューム(消費)アプリ120の両方がアプリ開発プラットフォーム118上でデプロイされ実行される。それにもかかわらず、イベント情報126は、(アプリ開発プラットフォーム118上で実行されている)プロデュースアプリ124からデータストレージプラットフォーム150にインポートされる可能性があり、その後、(同じくアプリ開発プラットフォーム118上で実行されている)アプリ120にイベント情報126を提供する可能性がある。
【0116】
図4を参照すると、アプリ120、特にイベントアーティファクト122を含むアプリ120の管理を容易にする、さらに別の例のコンピュータシステムまたはデータ処理システム100の機能ブロック図が図示されている。
図4に示されるように、イベント情報126は、最初にデータストレージプラットフォーム150からアプリ開発プラットフォーム118に提供され、次にアプリ開発プラットフォーム118からターゲットデバイス140上でデプロイされ実行されている(消費する)アプリ120に提供されるように、次にアプリ開発プラットフォーム118から構成される中間ステップを介してターゲットデバイス140上でデプロイされ実行されているアプリ120にイベント情報126を提供することができるプロデュースアプリ124からデータストレージプラットフォーム150にインポートされることができる。いくつかの例では、データストレージプラットフォーム150からのイベント情報126の提供は、データストレージプラットフォーム150からターゲットデバイス140上で展開され実行されている(消費)アプリ120に直接行われることもある。
【0117】
ターゲットデバイス140は、アプリ120の実行中に、提供されたイベント情報126にアプリアルゴリズム128を適用して、出力データ130を生成することができる。生成された出力データ130は、その後、ターゲットデバイス140のユーザインタフェース142を介して、例えば、ターゲットデバイス140によって構成されるディスプレイデバイスを介して、ターゲットデバイス140のユーザに表示され得る。
【0118】
図5を参照すると、アプリ120、特にイベントアーティファクト122を含むアプリ120の管理を容易にする、さらに別の例のコンピュータシステムまたはデータ処理システム100の機能ブロック図が示されている。
【0119】
図5に示されるように、生成された出力データ130を表示するためのユーザインタフェース142は、ターゲットデバイス140の外部にあってもよい。いくつかの例では、ユーザインタフェース142は、外部ディスプレイスクリーン、PLC、ラップトップなどのさらなるデバイスによって構成される場合がある。ターゲットデバイス140は、さらなるデバイスが、ターゲットデバイス140上で実行されているアプリ120によって生成された出力データ130を表示し得るように、さらなるデバイスと通信可能に結合され得る。この目的のために、ターゲットデバイス140は、生成された出力データ130をさらなるデバイスに送信することができる。
【0120】
図6を参照すると、アプリ120、特にイベントアーティファクト122を含むアプリ120の管理を容易にする、さらに別の例のコンピュータシステムまたはデータ処理システム100の機能ブロック図が示されている。
【0121】
図6に示されるように、2つのデバイス144、144’上でデプロイされ実行され、それぞれのイベントアーティファクト122、122’およびそれぞれのイベント情報126、126’を提供し得る2つのプロデュースアプリ124、124’が存在し得る。消費)アプリ120は、構成されたアプリアルゴリズム128とともに、アプリ開発プラットフォーム118のデータストア108に格納される場合がある。さらに、2組のアーティファクト情報122、122’、および任意選択で、2組のイベント情報126、126’は、データストア108に格納され得る。ここで、イベントアーティファクト122、122’の2つのセットは、アプリ開発プラットフォーム118によってサポートされるアプリ120を開発する目的のために使用され得る。アプリ120は、一例として、ターゲットデバイス140上にデプロイされ、実行され得る。イベントアーティファクト122、122’の2つのセットに対応するイベント情報126、126’の2つのセットは、それぞれの他のデバイス144、144’上でデプロイされ実行されるそれぞれのプロデュースアプリ124、124’から発信される可能性がある。それぞれのイベント情報126、126’は、まず、それぞれのプロデュースアプリ124、124’からデータストレージプラットフォーム150にインポートされ、その後、ターゲットデバイス140上でデプロイされ実行されているアプリ120にそれぞれのイベント情報126、126’を提供することができる。データストレージプラットフォーム150からのそれぞれのイベント情報126、126’のこの提供は、データストレージプラットフォーム150からターゲットデバイス140上で展開され実行されている(消費)アプリ120に直接行われるか、または、それぞれのイベント情報126、126’が最初にデータストレージプラットフォーム150からアプリ開発プラットフォーム118に提供され、次にアプリ開発プラットフォーム118からターゲットデバイス140上で展開され実行されている(消費)アプリ120に提供されるように、アプリ開発プラットフォーム118からなる中間ステップで行われるかのいずれかである。
【0122】
ターゲットデバイス140は、提供された2組のイベント情報126、126’に対して、アプリ120の実行中にアプリアルゴリズム128を適用して、出力データ130を生成することができる。
【0123】
いくつかの例では、2組のアーティファクト情報122、122’は、上記で説明したイベントチャネル132を使用して束ねられる場合があることを理解されたい。
【0124】
図7を参照すると、アプリ120、特にイベントアーティファクト122を含むアプリ120の管理を容易にする、さらに別の例のコンピュータシステムまたはデータ処理システム100の機能ブロック図が示されている。
【0125】
図7に示されるように、プロデュースアプリ124の開発者またはユーザは、プロデュースアプリ124に修正を加えた結果、修正されたプロデュースアプリ124’になる可能性がある。プロデュースアプリ124のそのような修正時に、少なくとも2つのオプション134が、例えばアプリ開発UI116を介して、(消費)アプリ120の開発者またはユーザに表示されることがある。表示されたオプション134は、元のプロデュースアプリ124のイベントアーティファクト122の使用を継続するオプション、または修正されたプロデュースアプリ124’’のそれぞれの修正されたイベントアーティファクト122の使用を開始するオプションから構成され得る。次に、開発者またはユーザは、表示されたオプション134のうちの1つを選択することを入力することができ、これにより、その選択が捕捉される。ユーザが、修正されたプロデュースアプリ124’’のそれぞれのイベントアーティファクト122の使用を開始することを選択した場合、それぞれの修正されたプロデュースアプリ124’’からのイベントアーティファクト122に対応するイベント情報126は、データストレージプラットフォーム150にインポートされ得る。このイベント情報126は、その後、データストレージプラットフォーム150からデプロイされ実行されているアプリ120に提供され得る。
【0126】
いくつかの例では、前述のオプション134は、前述の表示されたユーザインタフェース142を介して(消費)アプリ120のユーザに表示されることがある。
【0127】
図8を参照すると、アプリ120、特にイベントアーティファクト122を含むアプリ120の管理を容易にする、さらに別の例のコンピュータシステムまたはデータ処理システム100の機能ブロック図が示されている。
【0128】
図8に示されるように、ユーザ(ここではアプリ120の開発者)は、アプリ開発に使用可能なイベントアーティファクト122が保存されているリポジトリ152内を検索するために、イベントアーティファクト検索UI136を使用することができる。いくつかの例では、イベントアーティファクト検索UI136は、アプリ開発UI116によって構成される場合がある。
【0129】
また、さらなる例では、アプリ120の生成された出力データ130に関連する情報は、例えば他のユーザや開発者がアプリ開発のために保存されたイベントアーティファクト122を再利用できるように、リポジトリ152にイベントアーティファクト122として保存されることがあることも理解されるべきである。
【0130】
図9を参照すると、製品システム100内のアプリ120の管理を容易にする例示的な方法のフロー図が示されており、特に、イベントアーティファクト122を含むアプリ120が示されている。
【0131】
図9に示されるように、それぞれのプロデュースアプリ124は、イベント通知(122)やイベントトリガ状態転送(122’)などのイベントアーティファクト122、122’を提供することができる。提供されたアーティファクト122、122’は、(消費)アプリ120を開発するためにアプリ開発プラットフォーム118によって使用され得る。いくつかの例では、(消費する)アプリ120の開発中に、提供されたイベントアーティファクト122、122’は、アプリ開発プラットフォーム118のアプリ開発UI118にインポートされ、アプリ120は、提供されたイベントアーティファクト122、122’を使用して開発され得る。任意で、1つまたは2つ以上のイベントアーティファクト122のみを使用することもできる。
【0132】
同等の概念は、例えば、アプリ開発中に再利用可能なイベントアーティファクト122を保存するためのリポジトリ152に関しても適用可能である。イベントアーティファクト122は、第1のアプリ、例えばプロデュースアプリ124の開発者またはユーザによってリポジトリ152に提供される場合がある。第2のアプリ、例えば(消費)アプリ120の開発者またはユーザは、例えばイベントアーティファクト検索UI136を介して、リポジトリ152を検索することができる。このユーザは、リポジトリ152で利用可能な適切なイベントアーティファクト122を選択し、選択したイベントアーティをアプリ開発UI118にインポートし、インポートしたイベントアーティファクト122を使用して(消費)アプリ120を開発することができる。
【0133】
同様の概念は、例えば、プロデュースアプリ124と(消費)アプリ120との間に配置され得るデータストレージプラットフォーム150に関しても適用され得る。ここで、それぞれの提供されたイベントアーティファクト122に対応するイベント情報126は、プロデュースアプリ124からデータストレージプラットフォーム150にインポートされ、その後、(消費)アプリ120にイベント情報126を提供することができる。
【0134】
図10を参照すると、製品システム100内のアプリ120の管理を容易にする例示的な方法のフロー図が示されており、特に、イベントアーティファクト122を含むアプリ120が示されている。
【0135】
図10は、上半分にプロデュースアプリ124(「Produce」)を開発(デザインタイム「Design-time」)、デプロイ(デプロイタイム「Deploy-time」)、および実行(動作時間の意味でランタイム「Run-time」)するための第1のワークフロー、下半分にコンシュームアプリ120(コンシューム「Consume」)を開発、デプロイ、および実行するための第2のワークフローで構成される。
プロデュースアプリ124とコンシュームアプリ120の両方の開発段階において、対応するビジネスロジック(例えば、対応するアプリアルゴリズム128によって反映される)が、例えば、アプリ開発プラットフォーム118のアプリ開発UI116を使用して描画されることがある。アプリアルゴリズム128は、いくつかの例では、イベントチャネル132に埋め込まれるか、またはバンドルされるかもしれない適切なイベントアーティファクト122で提供されるかもしれない。
プロデュースアプリ124とコンシューム120の両方のデプロイメントフェーズ中に、それぞれのアプリ124、120がデプロイされ、データストレージプラットフォーム150への通信リンクがセットアップされることがある。このセットアップは、テナントID(例えば、それぞれのユーザまたは顧客用)を決定することと、各チャネル132のテナントを構成することとを含む場合がある。いくつかの例では、テナントはデータストレージプラットフォーム150に関連または対応する可能性がある。
【0136】
プロデュースアプリ124の動作中またはランタイム中に、プロデュースアプリ124は、イベントアーティファクト122に対応するイベント情報126を生成することがあり、これは、例えば、上述のチャネル132を使用して、データストレージプラットフォーム150にパブリッシュまたは通信されることがある。いくつかの例では、複数のチャネル132が1つのテナントまたはデータストレージプラットフォーム150に組み合わされることがある。コンシュームアプリ120の動作中またはランタイム中に、データストレージプラットフォーム150は、コンシュームアプリ120にイベント情報126を提供する可能性があり、提供されたイベント情報126は、コンシュームアプリ120のビジネスロジックまたはアプリアルゴリズム128にとって重要度が高いものである可能性がある。
【0137】
図11を参照すると、製品システム100内のアプリ120の管理を容易にする例示的な方法のフロー図が示されており、特に、イベントアーティファクト122を含むアプリ120が示されている。
【0138】
図11は、
図10に示された方法といくつかの類似点を有する方法を示す。相違点の1つは、プロデュースアプリ124とコンシューム120の両方のデプロイメント段階に関するものであり、それぞれのアプリ124、120をそれぞれのターゲットデバイスにデプロイすることから単純に構成される場合がある。
【0139】
さらに、プロデュースアプリ124およびコンシュームアプリ120の両方の動作中またはランタイム中に、それぞれのアプリ124、120がデプロイされる、またはデプロイされる異なるソフトウェア環境136が存在する可能性がある。ここで、それぞれのソフトウェア環境136におけるそれぞれのアプリ124、120のデプロイは、デプロイメントフェーズにおいて行われることがある。各ソフトウェア環境136および各イベントアーティファクト122またはイベントチャネル132内の各アプリ124、120に対して、別個のデータストレージプラットフォーム150またはテナントが提供され得る。プロデュースアプリ124の動作中またはランタイム中に、対応するイベント情報126が、それぞれのソフトウェア環境136上にデプロイされたそれぞれのプロデュースアプリ124から、それぞれのデータストレージプラットフォーム150またはテナントまたはイベントチャネル132にインポートされることがある。コンシュームアプリ120の動作中またはランタイム中に、データストレージプラットフォーム150は、それぞれのソフトウェア環境136上にデプロイされたそれぞれのコンシュームアプリ120にイベント情報126を提供することがあり、提供されたイベント情報126は、それぞれのコンシュームアプリ120のビジネスロジックまたはアプリアルゴリズム128にとって重要度が高い可能性がある。いくつかの例では、それぞれのコンシューム120は、異なるデータストレージプラットフォーム150またはチャネル132からイベント情報126を受信することができ、さらなる例では、それぞれのコンシューム120はまた、異なるソフトウェア環境136からイベント情報126を受信することができる(細線参照)。
【0140】
図12を参照すると、製品システム100内のアプリ120の管理を容易にする例示的な方法のフローが示されており、特に、イベントアーティファクト122を含むアプリ120が示されている。
【0141】
図12に示されるように、プロデュースアプリ124とコンシュームアプリ120の両方が、ビジネスロジックまたはアプリアルゴリズム128(「マイクロフローロジック」)を含む場合がある。プロデュースアプリ120において、アプリアルゴリズム128は、イベントアーティファクト122を出力として提供することがあり、イベントに関連する特定の出力データ130は、イベントアーティファクト126(「アウトボックステーブル」)として提供されることがある。イベント情報126は、データストレージプラットフォーム150(「企業ごとのデフォルトトピック」、例えば、イベントチャネル132を使用)に提供される前に、ライトアヘッドログ(「WAL」)を使用して検証され、(例えば、「デベジウム(Debezium)サイドカー」を介して)保存されてもよい。
【0142】
イベントアーティファクト122と対応するイベント情報126は、データストレージプラットフォーム150からコンシュームアプリ120に提供され、コンシュームアプリ120のビジネスロジックまたはアプリアルゴリズム128によって処理され、コンシュームアプリ120の出力データ130を生成する。
【0143】
いくつかの例では、ユーザ(ここではコンシュームアプリ120の開発者)は、アプリ開発に使用可能なイベントアーティファクト122が保存されているリポジトリ152を検索するために、イベントアーティファクト検索UI136を使用することができる。いくつかの例では、イベントアーティファクト検索UI136は、アプリ開発UI116によって構成されることがある。
【0144】
また、さらなる例では、コンシュームアプリ120(またはプロデュースアプリ)の生成された出力データ130に関連する情報は、例えば、他のユーザまたは開発者によるアプリ開発のために、保存されたイベントアーティファクト122の再利用を可能にするために、リポジトリ152にイベントアーティファクト122として保存され得ることは理解されるべきである。
【0145】
次に
図13を参照すると、イベントアーティファクトを含むアプリの開発など、アプリの管理を容易にする方法1300が示されている。本方法は、1302から開始することができ、本方法は、少なくとも1つのプロセッサの動作を通じて実施される複数の動作から構成され得る。
【0146】
これらの行為は、アプリを開発するためのアプリ開発プラットフォームのアプリ開発ユーザインタフェース(UI)をユーザに提供する行為1304と、アプリ開発UIとのユーザインタラクションに応答して、アプリを開発するためにそれぞれデプロイされ実行中のプロデュースアプリからそれぞれのイベントアーティファクトをインポートするユーザの意図をキャプチャする行為1306と、を含むことができる。キャプチャされたユーザの意図に対応するそれぞれのイベントアーティファクトをアプリ開発UIにインポートする行為1308と、インポートされたそれぞれのイベントアーティファクトを使用して、アプリ開発UIを介してアプリを開発する行為1310と、を含む。開発されたアプリをターゲットデバイス上でデプロイして実行する行為1312と、それぞれのイベントアーティファクトに対応するイベント情報を、それぞれのプロデュースアプリからデータストレージプラットフォームにインポートする行為1314と、データストレージプラットフォームにインポートされたイベント情報を、データストレージプラットフォームからデプロイされて実行されているアプリに提供する行為1316と、デプロイされて実行されているアプリによって構成されるアプリアルゴリズムを、提供されたイベント情報に対して適用して出力データを生成する行為1318を含む。1320で、方法を終了することができる。
【0147】
さらに、方法1300は、アプリを管理するコンピュータ実装方法、特にイベントアーティファクトを含むアプリを開発するコンピュータ実装方法に関して前述した他の行為や機能を含んでいてもよいことを理解されたい。
【0148】
例えば、本方法は、生成された出力データを、ターゲット機器のユーザインタフェースを介してターゲット機器のユーザに対して表示させる行為をさらに含むことができる。
【0149】
いくつかの例では、方法は、生成された出力データを、ターゲットデバイスまたはターゲットデバイスに接続された別のデバイスを分析、監視、操作および/または制御するために使用させる行為、および/または生成された出力データを使用してそれぞれのターゲットデバイスのユーザを分析および/または監視させる動作をさらに含むことができる。
【0150】
また、いくつかの例では、プロデュースアプリの修正時に、方法は、元のプロデュースアプリのそれぞれのイベントアーティファクトの継続的な使用または修正されたプロデュースアプリそれぞれのイベントアーティファクトの使用開始に対応する少なくとも2つの選択肢をユーザに対して表示する行為をさらに含み得ることは理解されるべきである。表示された選択肢の1つを選択するユーザの意図をキャプチャし、さらに、ユーザが修正されたプロデュースアプリのそれぞれのイベントアーティファクトの使用を開始することを選択した場合、それぞれのイベントアーティファクトに対応するイベント情報をそれぞれの修正されたプロデュースアプリからデータストレージプラットフォームにインポートする。
【0151】
例えば、ユーザが、それぞれのプロデュースアプリのそれぞれのイベントアーティファクトと互換性のない、それぞれの修正プロデュースアプリのそれぞれのイベントアーティファクトの使用を開始することを選択した場合、本方法は、それぞれの修正プロデュースアプリのそれぞれのイベントアーティファクトをアプリ開発UIにインポートする行為と、インポートされたそれぞれの修正プロデュースアプリのそれぞれのイベントアーティファクトを使用して、アプリ開発UIを通じてアプリを開発する行為と、開発されたアプリをターゲットデバイスにデプロイして実行する行為を、さらに含んでもよい。
【0152】
いくつかの例では、本方法は、アプリ開発に使用可能なイベントアーティファクトを保存するためのリポジトリで検索するためのイベントアーティファクト検索UIをユーザに提供する行為をさらに含むことがある。
【0153】
また、いくつかの例では、本方法は、生成された出力データに関連する情報をイベントアーティファクトとして、アプリ開発に再利用可能なイベントアーティファクトのリポジトリに保存する行為をさらに含むことも理解されるべきである。
【0154】
例えば、本方法は、それぞれのプロデュースアプリからそれぞれのイベントアーティファクトに対応するそれぞれのイベント情報を検証する行為と、それぞれのイベント情報が検証された場合にのみ、それぞれのプロデュースアプリからデータストレージプラットフォームにそれぞれのイベントアーティファクトに対応するそれぞれのイベント情報をインポートする行為とをさらに含むことができる。
【0155】
図14は、例えば、製品システムの一部として、および/または、本明細書に記載の処理を実行するようにソフトウェアなどによって動作可能に構成された他のシステムとして、実施形態が実装され得るデータ処理システム1000(コンピュータシステムとも呼ばれる)のブロック図である。データ処理システム1000は、例えば、上述のコンピュータまたはITシステムまたはデータ処理システム100で構成することができる。描かれたデータ処理システムは、1つまたは複数のブリッジ/コントローラ/バス1004(例えば、ノースブリッジ、サウスブリッジ)に接続され得る少なくとも1つのプロセッサ1002(例えば、CPU)を備える。バス1004の1つは、例えば、PCI Expressバスなどの1つまたは複数のI/Оバスで構成され得る。また、描かれている実施例において様々なバスに接続されているのは、メインメモリ1006(RAM)およびグラフィックコントローラ1008から構成される場合がある。グラフィックコントローラ1008は、1つまたは複数のディスプレイデバイス1010に接続される場合がある。また、いくつかの実施形態では、1つまたは複数のコントローラ(例えば、グラフィックス、サウスブリッジ)は、CPUと(同じチップまたはダイ上に)統合されてもよいことに留意すべきである。CPUアーキテクチャの例としては、IA-32、x86-64、およびARMプロセッサアーキテクチャが挙げられる。
【0156】
1つまたは複数のバスに接続される他の周辺機器は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、セルラーネットワーク、および/または他の有線または無線ネットワーク1014または通信機器に接続するように動作する通信コントローラ1012(イーサネットコントローラ、Wi-Fiコントローラ、セルラーコントローラ)を構成することができる。
【0157】
様々なバスに接続されたさらなるコンポーネントは、USBコントローラ、Bluetoothコントローラ、および/または(スピーカおよび/またはマイクロフォンに接続された)専用オーディオコントローラなどの1つまたは複数のI/Оコントローラ1016を構成することができる。また、様々な周辺機器が、入力デバイス1018(例えば、キーボード、マウス、ポインタ、タッチスクリーン、タッチパッド、描画タブレット、トラックボール、ボタン、キーパッド、ゲームコントローラ、ゲームパッド、カメラ、マイクロフォン、スキャナ、モーションジェスチャをキャプチャするモーションセンシングデバイス)、出力デバイス1020(例えば、プリンタ、スピーカ)、またはデータ処理システムに入力を提供するか、またはデータ処理システムから出力を受信するように動作する任意の他のタイプのデバイスから構成されるI/Оコントローラ(複数可)に(様々なポートおよび接続を介して)接続され得ることが理解されるべきである。また、入力デバイスまたは出力デバイスと呼ばれる多くのデバイスは、データ処理システムとの通信の入力を提供し、出力を受信する可能性があることを理解されたい。例えば、プロセッサ1002は、入力デバイスおよび表示デバイスの両方として機能するタッチスクリーンを備える筐体(タブレットなど)に統合される場合がある。さらに、いくつかの入力装置(ラップトップなど)は、複数の異なるタイプの入力装置(例えば、タッチスクリーン、タッチパッド、キーボード)から構成される場合があることを理解されたい。また、I/Оコントローラ1016に接続された他の周辺ハードウェア1022は、データ処理システムと通信するように構成されたあらゆるタイプのデバイス、機械、またはコンポーネントで構成され得ることを理解されたい。
【0158】
様々なバスに接続された追加コンポーネントは、1つまたは複数のストレージコントローラ1024(例えば、SATA)を構成することができる。ストレージコントローラは、1つまたは複数のストレージドライブおよび/または任意の関連するリムーバブル媒体などのストレージデバイス1026に接続されることがあり、これは、任意の適切な非一過性の機械使用可能または機械読取可能な記憶媒体とすることができる。例としては、不揮発性デバイス、揮発性デバイス、読み取り専用デバイス、書き込み可能デバイス、ROM、EPROM、磁気テープストレージ、フロッピーディスクドライブ、ハードディスクドライブ、ソリッドステートドライブ(SSD)、フラッシュメモリ、光ディスクドライブ(CD、DVD、Blu-ray(登録商標))、および他の既知の光学、電気、または磁気記憶デバイスドライブおよび/またはコンピュータ媒体が挙げられる。また、一部の例では、SSDなどのストレージデバイスをPCI ExpressバスなどのI/Oバス1004に直接接続することができる。
【0159】
本開示の実施形態によるデータ処理システムは、オペレーティングシステム1028、ソフトウェア/ファームウェア1030、およびデータストア1032(ストレージデバイス1026および/またはメモリ1006に記憶され得る)を含み得る。このようなオペレーティングシステムは、コマンドラインインタフェース(CLI)シェルおよび/またはグラフィカルユーザインタフェース(GUI)シェルを採用することができる。GUIシェルは、複数の表示ウィンドウをグラフィカルユーザインタフェースに同時に表示することを可能にし、各表示ウィンドウは、異なるアプリケーションまたは同じアプリケーションの異なるインスタンスへのインタフェースを提供する。グラフィカルユーザインタフェース内のカーソルやポインタは、マウスやタッチスクリーンなどのポインティングデバイスを介してユーザによって操作される。カーソル/ポインタの位置が変更され、および/またはマウスボタンのクリックやタッチスクリーンのタッチなどのイベントが生成され、所望の応答が作動する。データ処理システムで使用され得るオペレーティングシステムの例は、Microsoft Windows、Linux(登録商標)、UNIX(登録商標)、iOS、およびAndroIDオペレーティングシステムで構成され得る。また、データストアの例は、データファイル、データテーブル、リレーショナルデータベース(例えば、オラクル、マイクロソフトSQLサーバ)、データベースサーバ、または、プロセッサによって検索可能なデータを格納することができる他の構造および/または装置から構成される。
【0160】
通信コントローラ1012は、ネットワーク1014(データ処理システム1000の一部ではない)に接続することができ、このネットワーク1014は、当業者に知られているように、インターネットを含む任意のパブリックまたはプライベートデータ処理システムネットワークまたはネットワークの組み合わせとすることができる。データ処理システム1000は、ネットワーク1014を介して、サーバ1034(これもデータ処理システム1000の一部ではない)などの1つまたは複数の他のデータ処理システムと通信することができる。しかしながら、代替的なデータ処理システムは、分散システムの一部として実装された複数のデータ処理システムに対応することができ、この分散システムでは、複数のデータ処理システムに関連するプロセッサが、1つまたは複数のネットワーク接続によって通信することができ、単一のデータ処理システムによって実行されるものとして説明したタスクを集合的に実行することができる。したがって、データ処理システムに言及する場合、そのようなシステムは、ネットワークを介して互いに通信する分散システムで編成された複数のデータ処理システムにまたがって実装される可能性があることを理解されたい。
【0161】
さらに、「コントローラ」という用語は、少なくとも1つの動作を制御する任意のデバイス、システム、またはその一部を意味し、そのようなデバイスが、ハードウェア、ファームウェア、ソフトウェア、またはそれらの少なくとも2つの組み合わせで実装されているか否かを問わない。特定のコントローラに関連する機能は、集中型であっても分散型であってもよく、ローカルであってもリモートであってもよいことに留意すべきである。
【0162】
さらに、データ処理システムは、仮想マシンアーキテクチャまたはクラウド環境における仮想マシンとして実装され得ることが理解されるべきである。例えば、プロセッサ1002および関連コンポーネントは、1つまたは複数のサーバの仮想マシン環境で実行される仮想マシンに対応し得る。仮想マシンアーキテクチャの例としては、VMware ESCi、Microsoft Hyper-V、Xen、およびKVMが挙げられる。
【0163】
当業者であれば、データ処理システムのために描かれたハードウェアは、特定の実装のために異なり得ることを理解するであろう。例えば、本例のデータ処理システム1000は、コンピュータ、ワークステーション、サーバ、PC、ノートブックコンピュータ、タブレット、携帯電話、および/または、データを処理し、本明細書で論じるデータ処理システム、コンピュータ、プロセッサ、および/またはコントローラの動作に関連する本明細書で説明する機能性および特徴を実行するように動作可能な任意の他のタイプの装置/システムに対応し得る。描かれている例は、説明のためだけに提供されており、本開示に関するアーキテクチャ上の制限を意味するものではない。
【0164】
また、本明細書で説明するプロセッサは、本明細書で説明するディスプレイ装置および入力装置から離れたサーバに配置されてもよいことに留意されたい。そのような例では、説明されるディスプレイデバイスおよび入力デバイスは、有線または無線ネットワーク(インターネットを構成してもよい)を介してサーバ(および/またはサーバ上で実行される仮想マシン)と通信するクライアントデバイスに構成されてもよい。一部の実施形態では、このようなクライアント装置は、例えば、リモートデスクトップアプリケーションを実行するか、または、入力デバイスからサーバに入力を送信し、サーバから視覚情報を受信して表示デバイスを介して表示するために、サーバとリモートデスクトッププロトコルを実行するポータルデバイスに対応することができる。このようなリモートデスクトッププロトコルの例としては、Teradici社のPCoIP、Microsoft社のRDP、およびRFBプロトコルが挙げられる。このような例では、本明細書で説明するプロセッサは、サーバの物理プロセッサで実行される仮想マシンの仮想プロセッサに対応することができる。
【0165】
本明細書で使用する場合、「コンポーネント」および「システム」という用語は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせを包含することを意図している。したがって、例えば、システムまたはコンポーネントは、プロセス、プロセッサ上で実行されるプロセス、またはプロセッサであってもよい。さらに、コンポーネントまたはシステムは、単一のデバイス上にローカライズされる場合もあれば、複数のデバイスに分散される場合もある。
【0166】
また、本明細書で使用される場合、プロセッサは、データを処理するためにハードウェア回路、ソフトウェア、および/またはファームウェアを介して構成される任意の電子デバイスに対応する。例えば、本明細書で説明するプロセッサは、マイクロプロセッサ、CPU、FPGA、ASIC、または、コントローラボード、コンピュータ、サーバ、携帯電話、および/または任意の他のタイプの電子デバイスの形態を有することができるデータ処理システムにおいてデータを処理することができる任意の他の集積回路(IC)または他のタイプの回路の1つ以上(または組み合わせ)に対応することができる。
【0167】
当業者であれば、簡単かつ明瞭にするために、本開示と共に使用するのに適したすべてのデータ処理システムの完全な構造および動作は、本明細書には描かれておらず、記載されていないことを認識するであろう。その代わりに、本開示に特有であるか、または本開示の理解に必要であるデータ処理システムの部分のみが描かれ、説明される。データ処理システム1000の構造および動作の残りの部分は、当該技術分野で知られている様々な現在の実装および実施態様のいずれにも適合し得る。
【0168】
また、本明細書で使用される語句は、いくつかの例で明示的に限定されない限り、広く解釈されるべきであることを理解されたい。例えば、用語「comprise」ならびに、それらの派生語は、限定なしに包含することを意味する。単数形「a」、「an」、および「the」は、文脈上明らかにそうでないことが示されない限り、複数形も含むことを意図している。さらに、本明細書で使用される用語「および/または」は、関連する列挙された項目の1つまたは複数のあらゆる可能な組み合わせを指し、包含する。または」という用語は、文脈上そうでないことが明確に示されない限り、包括的であり、「および/または」を意味する。関連する」および「関連する」という語句、ならびにその派生語は、構成する、内部に構成される、相互に接続する、含有する、内部に含有される、接続する、結合する、通信可能である、協力する、相互接続する、並置する、近接する、結合する、有する、特性を有する、などを意味する場合がある。
【0169】
また、本明細書では、「第1」、「第2」、「第3」などの用語を用いて、様々な要素、機能、または行為を説明することがあるが、これらの要素、機能、または行為は、これらの用語によって限定されるべきではない。むしろ、これらの数字の形容詞は、異なる要素、機能または行為を互いに区別するために使用される。例えば、第1の要素、機能、または行為は、第2の要素、機能、または行為と称され得、同様に、第2の要素、機能、または行為は、本開示の範囲から逸脱することなく、第1の要素、機能、または行為と称され得る。
【0170】
さらに、1つまたは複数の機能またはプロセスを実行する「ように、プロセッサは、構成されている」などの表現は、プロセッサが、ソフトウェア、ファームウェア、および/または有線回路を介して、機能またはプロセスを実行するように動作可能に構成されている、または動作可能に構成されていることを意味する場合がある。例えば、機能/プロセスを実行するように構成されたプロセッサは、プロセッサに機能/プロセスを実行させるようにプログラムされたソフトウェア/ファームウェアを実行しているプロセッサに対応する場合があり、および/または、機能/プロセスを実行するためにプロセッサによって実行可能なソフトウェア/ファームウェアをメモリまたはストレージデバイスに有するプロセッサに対応する場合がある。また、1つまたは複数の機能またはプロセスを実行するように「構成された」プロセッサは、機能またはプロセスを実行するように特に作製された、または「配線された」プロセッサ回路(例えば、ASICまたはFPGA設計)にも対応し得ることに留意すべきである。さらに、1つ以上の機能を実行するように構成された要素(例えば、プロセッサ)の前の「少なくとも1つ」という語句は、それぞれ機能を実行する1つ以上の要素(例えば、プロセッサ)に対応する場合があり、また、1つ以上の異なる機能の異なるものをそれぞれ実行する2つ以上の要素(例えば、プロセッサ)に対応する場合がある。
【0171】
加えて、「隣接する」という用語は、文脈上そうでないことが明らかでない限り、ある要素がさらなる要素に比較的近いが接触していないこと、または要素がさらなる部分に接触していることを意味する場合がある。
【0172】
本開示の例示的な実施形態を詳細に説明したが、当業者であれば、本明細書に開示された様々な変更、置換、変形、および改良が、最も広い形態における本開示の精神および範囲から逸脱することなくなされ得ることを理解するであろう。
【0173】
本特許文献のいずれの記述も、特定の要素、ステップ、行為、または機能が、クレーム範囲に含まれなければならない必須要素であることを暗示するものとして読まれるべきではない。
【手続補正書】
【提出日】2024-06-12
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
アプリ(120)を開発するためにアプリ開発プラットフォーム(118)のアプリ開発
UI(ユーザインタフェー
ス)(116)をユーザに提供するステップと、
前記アプリ開発UI(116)とのユーザインタラクションに応答して、
前記アプリ(120)を開発するために、デプロイされ実行されているそれぞれのプロデュースアプリ(124)からそれぞれのイベントアーティファクト(122)をインポートする前記ユーザの意図をキャプチャするステップと、
前記キャプチャされたユーザの意図に対応する前記それぞれのイベントアーティファクト(122)を
前記アプリ開発UI(116)にインポートするステップと、
インポートされたそれぞれのイベントアーティファクト(122)を使用して、前記アプリ開発UI(116)を通じて前記アプリ(120)を開発するステップと、
前記開発されたアプリ(120)をターゲットデバイス(140)でデプロイして実行するステップと、
前記それぞれのイベントアーティファクト(122)に対応するイベント情報(126)を、前記それぞれのプロデュースアプリ(124)からデータストレージプラットフォーム(150)にインポートするステップと、
前記データストレージプラットフォーム(150)にインポートされたイベント情報(126)を、前記データストレージプラットフォーム(150)から前記デプロイされ実行されているアプリ(120)に提供するステップと、
出力データ(130)を生成するために、前記デプロイされ実行
されているアプリ(120)により構成されるアプリアルゴリズム(128)を、前記提供されたイベント情報(126)に適用するステップと、
を含むコンピュータ実装方法。
【請求項2】
前記生成された出力データ(130)を、前記ターゲットデバイス(140)のユーザインタフェース(142)を介して前記ターゲットデバイス(140)のユーザに対して、表示させるステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
生成された出力データ(130)を、ターゲットデバイス(140)またはターゲットデバイス(140)に接続された別のデバイス(144)の分析、監視、操作および/または制御に使用させるステップ、および/または
生成された出力データ(130)を使用して、
前記それぞれのターゲットデバイス(140)のユーザを分析および/または監視させるステップ、
をさらに含む
、請求項
1に記載のコンピュータ実装方法。
【請求項4】
前記それぞれのイベントアーティファクト(122)は、少なくとも1つのイベント通知および/または少なくとも1つのイベント搬送状態トランスファーを含む
、請求項
1に記載のコンピュータ実装方法。
【請求項5】
前記それぞれのイベントアーティファクト(122)は、前記それぞれデプロイされ実行されているプロデュースアプリ(124)からの少なくとも1つのイベントアーティファクト(122)を含むそれぞれのイベントチャネル(132)を含む、
請求項
1に記載のコンピュータ実装方法。
【請求項6】
前記それぞれのイベントチャネル(132)は、前記それぞれデプロイされ実行されているプロデュースアプリ(124)からの少なくとも1つのイベントアーティファクト(122)と、少なくとも第2の、デプロイされ実行されているプロデュースアプリ(124’)からの少なくとも1つのイベントアーティファクト(122’)とを含む、
請求項5に記載のコンピュータ実装方法。
【請求項7】
前記プロデュースアプリ(124)の修正時に、
前記元のプロデュースアプリ(124)のそれぞれのイベントアーティファクト(122)の継続使用または
前記修正されたプロデュースアプリ(124’’)の
前記それぞれのイベントアーティファクト(122)の使用開始に対応する少なくとも2つのオプション(134)を
前記ユーザに表示するステップと、
表示された選択肢のうちの1つを選択する
前記ユーザの意図をキャプチャするステップ(134)と、
前記ユーザが、前記修正されたプロデュースアプリ(124’’)の前記それぞれのイベントアーティファクト(122)の使用を開始することを選択した場合に、それぞれのイベントアーティファクト(122)に対応するイベント情報(126)を、それぞれの修正プロデュースアプリ(124’’)から
前記データストレージプラットフォーム(150)にインポートするステップと、
をさらに含む
、請求項
1に記載のコンピュータ実装方法。
【請求項8】
前記ユーザが、
前記それぞれのプロデュースアプリ(124)の
前記それぞれのイベントアーティファクト(122)と互換性のない、それぞれの修正プロデュースアプリ(124’’)のそれぞれのイベントアーティファクト(122)の使用を開始することを選択した場合に、
それぞれの修正プロデュースアプリ(124’’)のそれぞれのイベントアーティファクト(122)を
前記アプリ開発UI(116)にインポートするステップと、
インポートされたそれぞれの修正プロデュースアプリ(124’’)のそれぞれのイベントアーティファクト(122)を使用して、
前記アプリ開発UI(116)を通じて
前記アプリ(120)を開発するステップと、
前記開発されたアプリ(120)をターゲットデバイス(140)にデプロイして実行するステップと、
をさらに含む請求項7に記載のコンピュータ実装方法。
【請求項9】
アプリ開発に使用可能なイベントアーティファクト(122)を格納するためのリポジトリ(152)を検索するために、イベントアーティファクト検索UI(136)を前記ユーザに提供するステップを、さらに含む
、請求項
1に記載のコンピュータ実装方法。
【請求項10】
生成された出力データ(130)に関連する情報を、イベントアーティファクト(122)として、アプリ開発に再利用可能なイベントアーティファクト(122)のリポジトリ(152)に格納するステップをさらに含む
、請求項
1に記載のコンピュータ実装方法。
【請求項11】
前記それぞれのプロデュースアプリ(124)から、前記それぞれのイベントアーティファクト(122)に対応する前記それぞれのイベント情報(126)を検証するステップと、
前記それぞれのイベント情報(126)が検証された場合にのみ、前記それぞれのイベントアーティファクト(122)に対応する前記それぞれのイベント情報(126)を、前記それぞれのプロデュースアプリ(124)から前記データストレージプラットフォーム(150)にインポートするステップと、
をさらに含む
、請求項
1に記載のコンピュータ実装方法。
【請求項12】
作成される
前記アプリ(120)は、第1のモデルの少なくとも一部を含むことができ、前記第1のモデルは
、作成される
前記アプリ(120)及び/又
は作成される
前記アプリ(120)の機能性を特徴付け、
前記第1のモデルは、任意選択でエンティティ、エンティティにプロパティおよび値を割り当てる属性、およびエンティティが互いに通信することを可能にする関連付けのうちの少なくとも1つ、またはそれらの任意の組み合わせを含むことができ、エンティティは、前記イベントアーティファクト(122)、前記イベント情報(126)、または情報オブジェクトを表し、
前記第1のモデルは、前記イベントアーティファクト(122)、イベント情報(126)、
前記情報オブジェクト、または
前記アプリ(120)のページに関連するデータを処理するためのワークフローを任意選択で含み得る、
前記ページは、任意選択で、前記イベントアーティファクト(122)、前記イベント情報(126)、または
前記情報オブジェクト、または
、前記イベントアーティファクト(122)、
前記イベント情報(126)、または
前記情報オブジェクトから得られた情報を
、アプリユーザに対して表示することを実行する、
任意選択で、それぞれデプロイされ実行されている
前記プロデュースアプリ(124)は、第2のモデルの少なくとも一部を含むことができ、ここで、
前記第2のモデルは、任意選択で、少なくとも部分的に
前記第1のモデルと同様の特性またはアーキテクチャを有することができ、ここで、
前記第1のモデルは、任意選択で、少なくとも部分的に
前記第2のモデルとは異なり得る、
請求項
1に記載のコンピュータ実装方法。
【請求項13】
請求項
1~12のいずれか1項に記載のコンピュータ実施方法のステップを実行するように配置および構成されたコンピュータシステム(100、118)。
【請求項14】
コンピュータプログラム製品(162)であって、コンピュータシステム(100、118)により実行されると、前記コンピュータシステム(100、118)に、請求項1
~12のいずれか1項に記載の方法を実行させるコンピュータプログラムコードを含む、コンピュータプログラム製品。
【請求項15】
コンピュータシステム(100、118)によって実行されると、前記コンピュータシステム(100、118)に請求項1
~12のいずれか1項に記載の方法を実行させるコンピュータプログラムコードを含むコンピュータプログラム製品(162)を含むコンピュータ読み取り可能媒体(160)。
【国際調査報告】