JP2022525481A - 動的アクション入力のためのワークフローサポート - Google Patents

動的アクション入力のためのワークフローサポート Download PDF

Info

Publication number
JP2022525481A
JP2022525481A JP2021556538A JP2021556538A JP2022525481A JP 2022525481 A JP2022525481 A JP 2022525481A JP 2021556538 A JP2021556538 A JP 2021556538A JP 2021556538 A JP2021556538 A JP 2021556538A JP 2022525481 A JP2022525481 A JP 2022525481A
Authority
JP
Japan
Prior art keywords
workflow
action
list
api
design
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021556538A
Other languages
English (en)
Other versions
JP7245356B2 (ja
Inventor
ヤコブ サミュエル バルマン
レベッカ アニータ ディアス
ジョシュア ティモシー ネリウス
クリストファー マロイ
ヒメネス アルバート アルバラード
ハリー トーマス ネルソン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ServiceNow Inc
Original Assignee
ServiceNow Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ServiceNow Inc filed Critical ServiceNow Inc
Publication of JP2022525481A publication Critical patent/JP2022525481A/ja
Application granted granted Critical
Publication of JP7245356B2 publication Critical patent/JP7245356B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis

Abstract

永続ストレージは、リモートサービスのアプリケーションプログラミングインターフェース(API)の定義を含むことができ、APIは、リモートサービスに記憶された入力情報へのアクセスを提供する。1つ又は複数のプロセッサは、(i)アクション設計グラフィカルユーザインターフェース(GUI)上に表示するために、ワークフローの設計中にAPIから動的に取得されることになる入力情報の第1のセットの選択を可能にする第1のメニューを提供し、(ii)アクション設計GUI上に表示するために、ワークフローの設計中にAPIから動的に取得されることになる入力情報の第2のセットの選択を可能にする第2のメニューを提供し、(iii)アクション設計GUI上に表示するために、API、APIにリモートでアクセスする方法、及びAPIから受け取ったデータを解析する方法を指定するためのオプションを提供するように構成され得る。

Description

ワークフローは、実行されたときに1つ又は複数の目標を達成しようとするタスクの特定のシーケンス又は系列である。場合によっては、ワークフローは、状態間の種々の遷移によって接続される2つ以上の状態を有する状態機械として表され又は考えられてよい。状態から状態への遷移は、ユーザの入力、自動化された入力、データベースに記憶されている情報、変化するデータベース内の情報の値、若しくは他のメカニズムによって、又はそれらに基づいてトリガーされ得る。ワークフローは、ワークフロー定義、実行、及び管理のためのウェブベースのインターフェースを提供するリモートネットワーク管理プラットフォームによってサポートされ得る。
企業ワークフローは、リモートネットワーク管理プラットフォーム及び企業の外部のサードパーティサーバ上にホストされたリモートサービスからの情報を含む、種々のソースからの情報を統合することができる。例えば、特定の情報技術(IT)ポリシーを企業ユーザのコンピューティング装置又はアカウントに適用するワークフローは、コンピューティング装置の能力、並びにユーザのプロファイル及びアクセス許可を考慮することができる。前者の情報は、リモートネットワーク管理プラットフォーム内にローカルに記憶することができ、したがって、容易に利用可能であり、企業の制御下にある。他方で、後者の情報はリモートサービスにアウトソーシングされ得る。
ユーザのプロファイル及びアクセス許可を得るために、リモートネットワーク管理プラットフォームは、リモートサービスにアクセスするための適切な資格証明、並びに求められている情報を含むテーブル、フィールド、フォーム、アプリケーションプログラミングインターフェースなどを定義するそのスキーマを用いて構成され得る。それにもかかわらず、リモートサービス又は企業は、このスキーマを時として変更し得る。リモートネットワーク管理プラットフォームがそれに応じてそのアクセス要求を適応させない場合、そのワークフローは、失敗するか、又はリモートサービスにより利用可能な全ての情報にアクセスできなくなる。
本明細書の実施形態は、未知のスキーマ及び/又は時として変化し得るスキーマにおいて求められている情報を記憶するリモートサービスと統合するためのグラフィカルユーザインターフェース(GUI)及び他のメカニズムを提供する。これらのGUIにより、ワークフローのアクションを動的入力で定義することが可能になり、したがって、ワークフローがこれらの変化に適応できるようになる。有利には、これにより、柔軟なノーコードの方法でワークフローを定義することが可能になる。具体的には、ワークフロー設計中にワークフローに組み込まれたアクションは、スキーマの特定のバージョンにハードコーディングされない。したがって、これらのアクションは、ワークフロー設計中に存在するスキーマを十分に利用するためのオプションを、例えばリモートサービスの現在のスキーマをイントロスペクトすることによって、ワークフロー設計者に提供することができる。
特に、本明細書の実施形態は、アクション設計、ワークフロー設計、及びワークフロー実行の3つの異なるフェーズに関係し得る。アクション設計フェーズ中に、動的入力でアクションを定義することができる。この入力は、アプリケーションプログラミングインターフェース(API)を介してアクセス可能なリモートサービスからの入力であり得る。アクションは更に、API、それが呼び出される方法、それが返すデータを解析する方法、及び解析されたデータを記憶する場所の指定によって定義され得る。アクションの定義はメモリに記憶され得る。
ワークフロー設計フェーズ中に、動的入力による記憶されたアクションがワークフローに組み込まれ得る。そうすることにより、ワークフロー設計フェーズ中に、APIの能力に関する情報の動的取得をもたらすことができる。この例には、APIを介してアクセス可能なテーブルのリスト、及び特定の1つのテーブルにおけるフィールドのリストが含まれる。これらのテーブル及び/又はフィールドのうちの1つ又は複数に対する操作がワークフローに追加されてよい。ワークフローは、追加のフロー、サブフロー、及びアクションを用いて更に定義され得る。ワークフローの定義はメモリに記憶され得る。
ワークフロー実行フェーズ中に、トリガーイベントにより、ワークフローが実行を開始し得る。アクションが行われると、それにより、ワークフローで定義されているようにテーブル及び/又はフィールドに対して操作を行うことができる。
このように、ユーザは、APIを介してアクセス可能な特定のデータを操作するアクションを組み込むことができ、このアクセス及び操作をサポートするためのプログラムコードを書き込む必要がない。代わりに、動的入力によるアクション及びこれらのアクションを組み込んだワークフローを、ノーコードでGUIを介して定義することができる。これにより、変更された又は変更し得るスキーマを有するAPIについてのワークフローサポートを提供するために必要とされる時間が劇的に減少する。
したがって、第1の例示的実施形態は、永続ストレージと1つ又は複数のプロセッサとを含むリモートネットワーク管理プラットフォームの計算インスタンスを含むことができる。永続ストレージは、リモートサービスのAPIの定義を含むことができ、ここで、APIは、リモートサービスに記憶された入力情報へのアクセスを提供し、リモートサービスは、計算インスタンスとは物理的に異なる。1つ又は複数のプロセッサは、アクション設計GUIを介して、APIから動的入力を受け取るアクションの定義を得る動作を行うように構成することができ、ここで、アクションは、ワークフローに統合されるように構成される。上記の動作は、(i)アクション設計GUIの第1のバージョン上に表示するために、ワークフローの設計中にAPIから動的に取得されることになる入力情報の第1のセットの選択を可能にする第1のメニューを提供することと、(ii)場合によっては入力情報の第1のセットの選択を受け取ることに応答して、アクション設計GUIの第2のバージョン上に表示するために、ワークフローの設計中にAPIから動的に取得されることになる入力情報の第2のセットの選択を可能にする第2のメニューを提供することであって、入力情報の第2のセットは、入力情報の第1のセットの選択と関係付けられる、提供することと、(iii)場合によっては入力情報の第2のセットの選択を受け取ることに応答して、アクション設計GUIの1つ又は複数の更なるバージョン上に表示するために、API、APIにリモートでアクセスする方法、及びAPIから受け取ったデータを解析する方法を指定するためのオプションを提供することと、(iv)入力として入力情報の第1のセット及び入力情報の第2のセットを含むアクションの定義を永続ストレージに書き込むこととを含むことができる。
第2の例示的実施形態は、サーバ装置によって、クライアント装置に対して、ワークフローに統合されるように構成されたアクションを定義するアクション設計GUIの第1のバージョン上に表示するために、リモートサービスのAPIから動的に取得されることになる入力情報の第1のセットの選択を可能にする第1のメニューを提供するステップを含むことができ、ここで、動的取得は、ワークフローの設計中に行われ、リモートサービスは、サーバ装置及びクライアント装置とは物理的に異なる。第2の例示的実施形態は、場合によっては入力情報の第1のセットの選択を受け取ることに応答して、サーバ装置によって、クライアント装置に対して、アクション設計GUIの第2のバージョン上に表示するために、ワークフローの設計中にAPIから動的に取得されることになる入力情報の第2のセットの選択を可能にする第2のメニューを提供するステップを更に含むことができ、ここで、入力情報の第2のセットは、入力情報の第1のセットの選択と関係付けられる。第2の例示的実施形態は、場合によっては入力情報の第2のセットの選択を受け取ることに応答して、サーバ装置によって、クライアント装置に対して、アクション設計GUIの1つ又は複数の更なるバージョン上に表示するために、API、APIにリモートでアクセスする方法、及びAPIから受け取ったデータを解析する方法を指定するためのオプションを提供するステップを更に含むことができる。第2の例示的実施形態は、サーバ装置によって、永続ストレージに対して、入力として入力情報の第1のセット及び入力情報の第2のセットを含むアクションの定義を書き込むステップを更に含むことができる。
第3の例示的実施形態では、製造品が、プログラム命令を記憶した非一時的コンピュータ可読媒体を含むことができ、プログラム命令は、コンピューティングシステムによって実行されると、第1及び/又は第2の例示的実施形態に従う動作をコンピューティングシステムに実行させる。
第4の例示的実施形態では、コンピューティングシステムは、少なくとも1つのプロセッサ、並びにメモリ及びプログラム命令を含むことができる。プログラム命令は、メモリに記憶され、少なくとも1つのプロセッサによって実行されると、第1及び/又は第2の例示的実施形態に従う動作をコンピューティングシステムに実行させることができる。
第5の例示的実施形態では、システムは、第1及び/又は第2の例示的実施形態の動作のそれぞれを実行するための様々な手段を含むことができる。
上記及び他の実施形態、態様、利点、及び代替形態は、添付の図面を適宜参照して以下の詳細な説明を読むことによって当業者に明らかになるであろう。更に、本明細書に提供されたこの概要並びに他の説明及び図は、単に例として実施形態を示すことを意図しており、したがって、多くの変形が可能である。例えば、構造要素及び処理ステップは、請求項に係る実施形態の範囲内に留まりながら、再配置、結合、分散、若しくは除去され、又は他の方法で変更され得る。
例示的実施形態によるコンピューティング装置の概略図である。 例示的実施形態によるサーバ装置クラスタの概略図である。 例示的実施形態によるリモートネットワーク管理アーキテクチャを示す図である。 例示的実施形態によるリモートネットワーク管理アーキテクチャを含む通信環境を示す図である。 例示的実施形態によるリモートネットワーク管理アーキテクチャを含む別の通信環境を示す図である。 例示的実施形態によるフローチャートである。 例示的実施形態によるワークフロー設計ツールグラフィカルユーザインターフェースを示す図である。 例示的実施形態によるワークフロー設計ツールグラフィカルユーザインターフェースを示す図である。 例示的実施形態によるワークフロー設計ツールグラフィカルユーザインターフェースを示す図である。 例示的実施形態によるワークフロー設計ツールグラフィカルユーザインターフェースを示す図である。 例示的実施形態によるワークフロー設計ツールグラフィカルユーザインターフェースを示す図である。 例示的実施形態によるワークフロー設計ツールグラフィカルユーザインターフェースを示す図である。 例示的実施形態によるワークフロー設計ツールグラフィカルユーザインターフェースを示す図である。 例示的実施形態によるワークフロー設計ツールグラフィカルユーザインターフェースを示す図である。 例示的実施形態によるワークフロー設計ツールグラフィカルユーザインターフェースを示す図である。 例示的実施形態によるワークフロー設計ツールグラフィカルユーザインターフェースを示す図である。 例示的実施形態によるワークフロー設計ツールグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力を有するアクション設計ツールのためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力を有するアクション設計ツールのためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力を有するアクション設計ツールのためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力を有するアクション設計ツールのためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力を有するアクション設計ツールのためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力を有するアクション設計ツールのためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力によるアクションをワークフローに統合するためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力によるアクションをワークフローに統合するためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力によるアクションをワークフローに統合するためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力によるアクションをワークフローに統合するためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力によるアクションをワークフローに統合するためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、動的入力によるアクションをワークフローに統合するためのグラフィカルユーザインターフェースを示す図である。 例示的実施形態による、アクション設計、ワークフロー設計、及びワークフロー実行のフェーズを示す図である。 例示的実施形態によるフローチャートである。
例示的な方法、装置、及びシステムが本明細書で説明される。「例」及び「例示的」という言葉は、本明細書では「実施例、例、又は例示として機能すること」を意味するように使用されると理解されるべきである。本明細書で「例」又は「例示的」であると説明される任意の実施形態又は特徴は、そのように明言されない限り、他の実施形態又は特徴よりも好ましい又は有利であると必ずしも解釈される必要はない。したがって、本明細書で示される主題の範囲から逸脱することなく、他の実施形態が使用されてよく、他の変更がなされてよい。
したがって、本明細書に記載の例示的実施形態は、限定するように意図されていない。本開示の態様は、本明細書に一般的に記載され図示されるように、様々な異なる形態で配置、置換、結合、分離、設計され得ることは容易に理解されるであろう。例えば、「クライアント」構成要素と「サーバ」構成要素への特徴の分離は、多くの方法で生じ得る。
更に、文脈が別段に示唆しない限り、各図に示される特徴は互いに組み合わされて使用されてよい。したがって、図面は、一般に、全ての図示された特徴が各実施形態に必要であるとは限らないことを理解した上で、1つ又は複数の全体的な実施形態の構成要素の態様とみなされるべきである。
更に、本明細書又は特許請求の範囲における要素、ブロック又は、ステップの列挙は、明瞭性の目的のためである。したがって、このような列挙は、これらの要素、ブロック、又はステップが特定の配列に固定される又は特定の順序で実行されることを必要とする又は示唆すると解釈されるべきではない。
I.序論
大企業は、相互に関連する多くの業務を含む複雑な実体である。これらの中には、人事(HR)、サプライチェーン、情報技術(IT)、及び財務などのように企業に横断的に見られるものもある。しかしながら、それぞれの企業は、本質的な機能を提供し及び/又は競争優位性を創出する、それ独自の業務も有する。
広く実施される業務をサポートするために、企業は一般的に、顧客関係管理(CRM)及び人的資本管理(HCM)パッケージのような既製のソフトウェアアプリケーションを使用する。しかしながら、企業は、自身の独自の要件を満たすためにカスタムソフトウェアアプリケーションを必要とすることもある。大企業は、多くの場合、数十から数百のこうしたカスタムソフトウェアアプリケーションを有する。それにもかかわらず、本明細書の実施形態によって提供される利点は、大企業に限定されず、任意の規模の企業又は他の任意のタイプの組織に適用され得る。
多くのそのようなソフトウェアアプリケーションは、企業内の個々の部門によって開発される。これらは、簡単なスプレッドシートからカスタムメイドのソフトウェアツール及びデータベースまで様々である。しかし、サイロ化されたカスタムソフトウェアアプリケーションの急増には多くの欠点がある。それは、企業の業務を運営し成長させ、革新し、規制要件を満たすための企業の能力に対して悪影響を及ぼす。企業は、そのサブシステムとデータを統合する単一のシステムがないために、その業務を統合し合理化し強化することが困難になる可能性がある。
カスタムアプリケーションを効率的に作成するために、企業は、不必要な開発の複雑さを排除するリモートホストされたアプリケーションプラットフォームの恩恵を受けるであろう。そのようなプラットフォームの目標は、時間を消費する反復的なアプリケーション開発タスクを減らして、ソフトウェアエンジニア及び他の役割の個人が独自の高価値の機能の開発に集中できるようにすることである。
この目標を達成するために、サービスとしてのアプリケーションプラットフォーム(aPaaS)の概念が導入されて、企業全体にわたるワークフローがインテリジェントに自動化される。aPaaSシステムは企業からリモートでホストされるが、安全な接続を介して企業内のデータ、アプリケーション、及びサービスにアクセスすることができる。そのようなaPaaSシステムは、いくつかの有利な能力及び特徴を有することができる。これらの利点及び特徴は、IT、HR、CRM、顧客サービス、アプリケーション開発、及びセキュリティに関する企業の業務及びワークフローを改善する可能性がある。
aPaaSシステムは、モデル・ビュー・コントローラ(MVC)アプリケーションの開発及び実行をサポートすることができる。MVCアプリケーションは、情報の表現をその情報がユーザに提示される方法から分離するために、それらの機能を3つの相互接続部分(モデル、ビュー、及びコントローラ)に分割し、それにより、効率的なコード再利用及び並列開発を可能にする。これらのアプリケーションはウェブベースとすることができ、作成、読取り、更新、削除(CRUD)能力を提供することができる。これにより、新しいアプリケーションを共通のアプリケーションインフラストラクチャ上に構築することが可能になる。
aPaaSシステムは、グラフィカルユーザインターフェース(GUI)開発用のウィジェットの標準化されたセットなど、標準化されたアプリケーション構成要素をサポートすることができる。このようにして、aPaaSシステムを使用して構築されたアプリケーションは共通のルックアンドフィールを有する。他のソフトウェア構成要素及びモジュールも標準化されることがある。場合によっては、このルックアンドフィールは、企業のカスタムロゴ及び/又は配色を用いてブランド化又はスキン化され得る。
aPaaSシステムは、メタデータを使用してアプリケーションの挙動を設定する能力をサポートすることができる。これにより、アプリケーションの挙動を特定のニーズに合うように迅速に適応させることができる。そのような手法により、開発時間が短縮し、柔軟性が向上する。更に、aPaaSシステムは、メタデータの作成及び管理を容易にするGUIツールをサポートし、それによりメタデータ内のエラーを減らすことができる。
aPaaSシステムは、アプリケーション間の明確に定義されたインターフェースをサポートしているため、ソフトウェア開発者は望ましくないアプリケーション間の依存関係を回避することができる。したがって、aPaaSシステムは、永続的状態情報及び他のデータが記憶されるサービス層を実装することができる。
aPaaSシステムは、統合機能の豊富なセットをサポートしているため、システム上のアプリケーションがレガシーアプリケーション及びサードパーティアプリケーションと対話することができる。例えば、aPaaSシステムは、レガシーのHR、IT、及び会計システムと統合するカスタムの従業員オンボーディングシステムをサポートすることができる。
aPaaSシステムは、エンタプライズレベルのセキュリティをサポートすることができる。また、aPaaSシステムはリモートでホストされ得るので、企業内のシステム、又は企業外でホストされるサードパーティのネットワーク及びサービスと対話するときに、セキュリティ手順も利用すべきである。例えば、aPaaSシステムは、一般的なセキュリティの脅威を検出し識別するために、企業及び他の関係者の間でデータを共有するように構成され得る。
aPaaSシステムには他の特徴、機能、及び利点もあり得る。この説明は、例示を目的としており、限定することを意図していない。
aPaaS開発プロセスの例として、ソフトウェア開発者は、aPaaSシステムを使用して新しいアプリケーションを作成する任務を与えられることがある。まず、開発者はデータモデルを定義することができ、それにより、アプリケーションが使用するデータのタイプ及びそれらの間の関係を指定する。次いで、aPaaSシステムのGUIを介して、開発者はデータモデルを入力(例えばアップロード)する。aPaaSシステムは、対応するデータベーステーブル、フィールド、及び関係の全てを自動的に作成し、それらには、オブジェクト指向サービス層を介してアクセスすることができる。
更に、aPaaSシステムは、クライアント側のインターフェースとサーバ側のCRUDロジックを有する完全機能MVCアプリケーションを構築することもできる。この生成されたアプリケーションは、ユーザのための更なる開発の基盤として機能することができる。有利なことに、開発者は基本的なアプリケーション機能に大量の時間を費やす必要がない。更に、アプリケーションはウェブベースとすることができるので、任意のインターネット対応クライアント装置からアクセスすることができる。代替的又は追加的に、例えばインターネットサービスが利用できないときに、アプリケーションのローカルコピーにアクセスできることがある。
aPaaSシステムは、アプリケーションに追加できる予め定義された機能の豊富なセットをサポートすることもできる。これらの機能は、検索、電子メール、テンプレート、ワークフロー設計、レポート、分析、ソーシャルメディア、スクリプト作成、モバイル対応の出力、及びカスタマイズされたGUIのサポートを含む。
以下の実施形態は、例示的なaPaaSシステムのアーキテクチャ及び機能的態様、並びにその特徴及び利点を説明する。
II.例示的なコンピューティング装置及びクラウドベースのコンピューティング環境
図1は、コンピューティング装置100を例示する簡略ブロック図であり、本明細書の実施形態に従って動作するように構成されたコンピューティング装置に含まれ得る構成要素のいくつかを示す。コンピューティング装置100は、クライアント装置(例えば、ユーザによって能動的に操作される装置)、サーバ装置(例えば、クライアント装置に計算サービスを提供する装置)、又は他の何らかのタイプの計算プラットフォームであり得る。サーバ装置によっては、特定の動作を実行するために時としてクライアント装置として動作する場合があり、クライアント装置によっては、サーバ機能を組み込んでいる場合がある。
この例では、コンピューティング装置100は、プロセッサ102、メモリ104、ネットワークインターフェース106、及び入出力ユニット108を含み、それらの全ては、システムバス110又は同様のメカニズムによって結合することができる。いくつかの実施形態では、コンピューティング装置100は、他の構成要素及び/又は周辺装置(例えば、取外し可能ストレージ、プリンタなど)を含んでよい。
プロセッサ102は、中央処理装置(CPU)、コプロセッサ(例えば、数学、グラフィックス、又は暗号化コプロセッサ)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、及び/又はプロセッサ動作を実行する集積回路若しくはコントローラの形態など、任意のタイプのコンピュータ処理要素のうちの1つ又は複数とすることができる。場合によっては、プロセッサ102は、1つ又は複数のシングルコアプロセッサであってよい。他の場合、プロセッサ102は、複数の独立した処理ユニットを有する1つ又は複数のマルチコアプロセッサであってよい。また、プロセッサ102は、実行されている命令及び関連データを一時的に記憶するためのレジスタメモリ、並びに最近使用された命令及びデータを一時的に記憶するためのキャッシュメモリを含むことができる。
メモリ104は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、及び不揮発性メモリ(例えば、フラッシュメモリ、ハードディスクドライブ、ソリッドステートドライブ、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、及び/又はテープストレージ)を含むがこれらに限定されない、任意の形態のコンピュータ使用可能メモリであってよい。したがって、メモリ104は主記憶装置と長期記憶装置の両方を表す。他のタイプのメモリは生物学的メモリを含み得る。
メモリ104は、プログラム命令及び/又はプログラム命令が動作し得るデータを記憶することができる。例として、メモリ104は、これらのプログラム命令を非一時的コンピュータ可読媒体に記憶することができ、したがって、これらの命令は、本明細書又は添付の図面で開示される任意の方法、プロセス、又は動作を行うためにプロセッサ102によって実行可能である。
図1に示されるように、メモリ104は、ファームウェア104A、カーネル104B、及び/又はアプリケーション104Cを含むことができる。ファームウェア104Aは、コンピュータ装置100の一部又は全部をブート又は他の様式で起動するために使用されるプログラムコードであり得る。カーネル104Bは、メモリ管理、プロセスのスケジューリング及び管理、入出力、並びに通信のためのモジュールを含む、オペレーティングシステムであり得る。カーネル104Bは、オペレーティングシステムがコンピューティング装置100のハードウェアモジュール(例えば、メモリユニット、ネットワーキングインターフェース、ポート、及びバス)と通信することを可能にする、デバイスドライバを含むこともできる。アプリケーション104Cは、ウェブブラウザ又は電子メールクライアント、並びにこれらのプログラムによって使用される任意のソフトウェアライブラリなどの、1つ又は複数のユーザ空間ソフトウェアプログラムであり得る。メモリ104は、これら並びに他のプログラム及びアプリケーションによって使用されるデータを記憶することもできる。
ネットワークインターフェース106は、イーサネット(例えば、ファストイーサネット、ギガビットイーサネット)などの1つ又は複数の有線インターフェースの形態をとることができる。ネットワークインターフェース106は、同軸ケーブル若しくは電力線などの1つ若しくは複数の非イーサネット媒体を介する通信、又は同期光ネットワーク(SONET)又はデジタル加入者線(DSL)技術などの広域媒体を介する通信をサポートすることもできる。ネットワークインターフェース106は更に、IEEE802.11(Wifi)、BLUETOOTH(登録商標)、全地球測位システム(GPS)、又は広域無線インターフェースなどの1つ又は複数の無線インターフェースの形態をとることもできる。しかしながら、他の形態の物理層インターフェース及び他のタイプの標準又は独自仕様の通信プロトコルがネットワークインターフェース106を介して使用されてもよい。更に、ネットワークインターフェース106は複数の物理インターフェースを含むこともできる。例えば、コンピューティング装置100のいくつかの実施形態は、イーサネット、BLUETOOTH(登録商標)、及びWifiインターフェースを含むことができる。
入出力ユニット108は、コンピューティング装置100とユーザ及び周辺装置の対話を容易にすることができる。入出力ユニット108は、キーボード、マウス、タッチスクリーンなどの1つ又は複数のタイプの入力装置を含むことができる。同様に、入出力ユニット108は、スクリーン、モニタ、プリンタ、及び/又は1つ若しくは複数の発光ダイオード(LED)などの1つ又は複数のタイプの出力装置を含むことができる。追加的又は代替的に、コンピューティング装置100は、例えば、ユニバーサルシリアルバス(USB)又は高精細マルチメディアインターフェース(HDMI)ポートインターフェースを使用して、他の装置と通信することができる。
いくつかの実施形態では、コンピューティング装置100のような1つ又は複数のコンピューティング装置が展開されてaPaaSアーキテクチャをサポートすることができる。これらのコンピューティング装置の正確な物理的位置、接続性、及び構成は、クライアント装置にとって不明であってよく、及び/又は重要でなくてもよい。したがって、コンピューティング装置は、様々なリモートデータセンタの場所に収容され得る「クラウドベース」装置と呼ばれることがある。
図2は、例示的実施形態によるクラウドベースのサーバクラスタ200を示す。図2では、コンピューティング装置(例えば、コンピューティング装置100)の動作は、サーバ装置202、データストレージ204、及びルータ206の間で分散されることができ、それらの全ては、ローカルクラスタネットワーク208によって接続することができる。サーバクラスタ200内のサーバ装置202、データストレージ204、及びルータ206の数は、サーバクラスタ200に割り当てられたコンピューティングタスク及び/又はアプリケーションに依存し得る。
例えば、サーバ装置202は、コンピューティング装置100の様々なコンピューティングタスクを実行するように構成され得る。したがって、コンピューティングタスクは、1つ又は複数のサーバ装置202の間で分散することができる。これらのコンピューティングタスクを並列に実行できる限り、タスクのそのような分散により、これらのタスクを完了して結果を返すまでの合計時間を短縮することができる。簡単にするために、サーバクラスタ200と個々のサーバ装置202の両方が「サーバ装置」と呼ばれることがある。この命名は、1つ又は複数の別個のサーバ装置、データストレージ装置、及びクラスタルータがサーバ装置動作に関与し得ることを示唆すると理解されるべきである。
データストレージ204は、ハードディスクドライブ及び/又はソリッドステートドライブのグループに対する読取り及び書込みアクセスを管理するように構成されたドライブアレイコントローラを含むデータストレージアレイであり得る。また、ドライブアレイコントローラは、単独で又はサーバ装置202と共に、データストレージ204に記憶されたデータのバックアップ又は冗長コピーを管理して、1つ又は複数のサーバ装置202がデータストレージ204のユニットにアクセスするのを妨げるドライブの障害又は他のタイプの障害からの保護をするように構成され得る。ドライブ以外の他のタイプのメモリが使用されてもよい。
ルータ206は、サーバクラスタ200のための内部及び外部通信を提供するように構成されたネットワーク機器を含むことができる。例えば、ルータ206は、(i)ローカルクラスタネットワーク208を介するサーバ装置202とデータストレージ204との間のネットワーク通信、及び/又は(ii)ネットワーク212への通信リンク210を介するサーバクラスタ200と他の装置との間のネットワーク通信を提供するように構成された、1つ又は複数のパケット交換及び/又はルーティング装置(スイッチ及び/又はゲートウェイを含む)を含むことができる。
更に、ルータ206の構成は、サーバ装置202及びデータストレージ204のデータ通信要件、ローカルクラスタネットワーク208のレイテンシ及びスループット、通信リンク210のレイテンシ、スループット、及びコスト、並びに/又は、コスト、速度、耐故障性、回復力、効率、及び/若しくはシステムアーキテクチャの他の設計目標に寄与し得る他のファクタに、少なくとも部分的に基づくことができる。
可能な例として、データストレージ204は、構造化照会言語(SQL)データベースなどの任意の形態のデータベースを含むことができる。テーブル、アレイ、リスト、ツリー、及びタプルを含むがこれらに限定されない様々なタイプのデータ構造により、そのようなデータベースに情報を格納することができる。更に、データストレージ204における任意のデータベースは、モノリシックであってよく、又は複数の物理装置にわたって分散されてもよい。
サーバ装置202は、データストレージ204との間でデータを送受信するように構成され得る。この送信及び取得はそれぞれ、SQLクエリ又は他のタイプのデータベースクエリの形態、及びそのようなクエリの出力の形態をとることができる。追加のテキスト、画像、ビデオ、及び/又はオーディオも含まれてよい。更に、サーバ装置202は、受信したデータをウェブページ表現へ編成することができる。そのような表現は、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、又は他の何らかの標準化された若しくは独自仕様のフォーマットなど、マークアップ言語の形態をとることができる。更に、サーバ装置202は、限定されないが、Perl、Python、PHPハイパーテキストプリプロセッサ(PHP)、アクティブサーバページ(ASP)、JavaScript(登録商標)など、様々なタイプのコンピュータ化スクリプト言語を実行する能力を有することができる。これらの言語で書かれたコンピュータプログラムコードは、クライアント装置へのウェブページの提供、並びにウェブページとクライアント装置の対話を容易にすることができる。
III.例示的リモートネットワーク管理アーキテクチャ
図3は、例示的実施形態によるリモートネットワーク管理アーキテクチャを示す。このアーキテクチャは、インターネット350を介して全て接続された3つの主な構成要素である、管理対象ネットワーク300、リモートネットワーク管理プラットフォーム320、及びサードパーティネットワーク340を含む。
管理対象ネットワーク300は、例えば、コンピューティング及び通信タスク、並びにデータの記憶のために実体によって使用される企業ネットワークであり得る。したがって、管理対象ネットワーク300は、クライアント装置302、サーバ装置304、ルータ306、仮想マシン308、ファイアウォール310、及び/又はプロキシサーバ312を含むことができる。クライアント装置302はコンピューティング装置100によって具現化されてよく、サーバ装置304はコンピューティング装置100又はサーバクラスタ200によって具現化されてよく、ルータ306は任意のタイプのルータ、スイッチ、又はゲートウェイであってよい。
仮想マシン308は、コンピューティング装置100又はサーバクラスタ200のうちの1つ又は複数によって具現化され得る。一般に、仮想マシンは、コンピューティングシステムのエミュレーションであり、物理的コンピュータの機能(例えば、プロセッサ、メモリ、及び通信リソース)を模倣する。サーバクラスタ200などの1つの物理的コンピューティングシステムは、最大数千個の個別仮想マシンをサポートすることができる。いくつかの実施形態では、仮想マシン308は、個別仮想マシンに対する物理的コンピューティングリソースの割り当て、並びにパフォーマンス及びエラーの報告を容易にする、集中型サーバ装置又はアプリケーションによって管理され得る。企業は、必要に応じて、効率的にコンピューティングリソースを割り当てるために仮想マシンをしばしば使用する。仮想化コンピューティングシステムのプロバイダには、VMWARE(登録商標)及びMICROSOFT(登録商標)が含まれる。
ファイアウォール310は、管理対象ネットワーク300から開始される許可された通信を可能にしながら、管理対象ネットワーク300をその中の装置、アプリケーション、及びサービスにアクセスする不正な試みから保護する、1つ又は複数の専用ルータ又はサーバ装置であり得る。ファイアウォール310はまた、侵入検出、ウェブフィルタリング、ウイルススキャン、アプリケーション層ゲートウェイ、及び他のアプリケーション又はサービスを提供することができる。図3に示されていないいくつかの実施形態では、管理対象ネットワーク300は、リモートネットワーク管理プラットフォーム320と通信するために用いる1つ又は複数の仮想プライベートネットワーク(VPN)ゲートウェイを含むことができる(下記参照)。
管理対象ネットワーク300は、1つ又は複数のプロキシサーバ312を含むこともできる。プロキシサーバ312の一実施形態は、管理対象ネットワーク300、リモートネットワーク管理プラットフォーム320、及びサードパーティネットワーク340の間のデータの通信及び移動を容易にするサーバ装置とすることができる。特に、プロキシサーバ312は、リモートネットワーク管理プラットフォーム320の1つ又は複数の計算インスタンスとの安全な通信セッションを確立し維持することが可能であり得る。そのようなセッションによって、リモートネットワーク管理プラットフォーム320は、管理対象ネットワーク300及びその構成要素のアーキテクチャ及び構成の態様を発見し管理することが可能であり得る。場合によっては、プロキシサーバ312の助けを借りて、リモートネットワーク管理プラットフォーム320は、管理対象ネットワーク300によって使用されるサードパーティネットワーク340の態様を発見し管理することも可能であり得る。
ファイアウォール310などのファイアウォールは、通常、インターネット350を介して着信する全ての通信セッションに関して、そのようなセッションがファイアウォールの背後から(即ち、管理対象ネットワーク300上の装置から)最終的に開始されたか、又はファイアウォールがそのセッションをサポートするように明示的に構成されていない限り、それら全ての通信セッションを拒否する。プロキシサーバ312をファイアウォール310の背後に(例えば、管理対象ネットワーク300内に、ファイアウォール310によって保護されるように)配置することによって、プロキシサーバ312は、ファイアウォール310を介してこれらの通信セッションを開始することが可能であり得る。したがって、ファイアウォール310はリモートネットワーク管理プラットフォーム320からの着信セッションをサポートするために特に構成される必要がなく、それにより、管理対象ネットワーク300に対する潜在的なセキュリティリスクを回避し得る。
場合によっては、管理対象ネットワーク300は、数個の装置と少数のネットワークとから構成されることがある。他の展開では、管理対象ネットワーク300は複数の物理的場所にまたがり、数百のネットワーク及び数十万の装置を含むことができる。したがって、図3に示されるアーキテクチャは桁違いに拡大又は縮小することが可能である。
更に、管理対象ネットワーク300のサイズ、アーキテクチャ、及び接続性に応じて、様々な数のプロキシサーバ312がその中に展開され得る。例えば、プロキシサーバ312のそれぞれが、管理対象ネットワーク300の一部分に関してリモートネットワーク管理プラットフォーム320との通信を担当することができる。代替的又は追加的に、負荷分散、冗長性、及び/又は高可用性を目的として、2つ以上のプロキシサーバのセットが管理対象ネットワーク300のそのような一部分に割り当てられてもよい。
リモートネットワーク管理プラットフォーム320は、aPaaSサービスをユーザに特に管理対象ネットワーク300のオペレータに提供するホストされた環境である。これらのサービスは、例えば、ウェブベースのポータルの形態をとることができる。したがって、ユーザは、例えば、クライアント装置302から、又は潜在的に管理対象ネットワーク300の外部のクライアント装置から、リモートネットワーク管理プラットフォーム320に安全にアクセスすることができる。ウェブベースのポータルを介して、ユーザは、アプリケーションを設計、テスト、及び展開し、レポートを生成し、分析を表示し、並びに他のタスクを実行することができる。
図3に示されるように、リモートネットワーク管理プラットフォーム320は、4つの計算インスタンス322、324、326、及び328を含む。これらのインスタンスのそれぞれは、特定の顧客に利用可能な一組のウェブポータル、サービス、及びアプリケーション(例えば、完全に機能するaPaaSシステム)を提供する1つ又は複数のサーバ装置及び/又は1つ又は複数のデータベースを表すことができる。場合によっては、単一の顧客が複数の計算インスタンスを使用してもよい。例えば、管理対象ネットワーク300は、リモートネットワーク管理プラットフォーム320の企業顧客であってよく、計算インスタンス322、324、及び326を使用してもよい。複数のインスタンスを1人の顧客に提供する理由は、顧客が独立してそのアプリケーション及びサービスを開発、テスト、及び展開したいと希望することがあるからである。したがって、計算インスタンス322は、管理対象ネットワーク300に関連するアプリケーション開発に専用とされてよく、計算インスタンス324は、これらのアプリケーションのテストに専用とされてよく、計算インスタンス326は、テストされるアプリケーション及びサービスのライブ運用に専用とされてよい。計算インスタンスは、ホストインスタンス、リモートインスタンス、顧客インスタンス、又は他の何らかの名称で呼ばれてもよい。計算インスタンス上に展開された任意のアプリケーションは、計算インスタンス内のデータベースへのアクセスが、その中の特定の要素(例えば、1つ又は複数の特定のデータベーステーブル又は1つ又は複数のデータベーステーブルを有する特定の行)に限定され得るという点で、スコープ指定されたアプリケーションであり得る。
明瞭にするために、本明細書の開示では、物理的なハードウェア、ソフトウェア、及びそれらの配置を「計算インスタンス」と呼ぶ。ユーザがそれによって提供されるグラフィカルユーザインターフェースを口語的に「インスタンス」と呼び得ることに留意されたい。しかし、本明細書において特に定義されない限り、「計算インスタンス」は、リモートネットワーク管理プラットフォーム320内に配置されたコンピューティングシステムである。
リモートネットワーク管理プラットフォーム320のマルチインスタンスアーキテクチャは従来のマルチテナントアーキテクチャとは対照的であり、マルチインスタンスアーキテクチャはいくつかの利点を有する。マルチテナントアーキテクチャでは、異なる顧客(例えば企業)からのデータが、単一のデータベースに混合される。これらの顧客のデータは互いに分離されているが、その分離は単一のデータベースを動作させるソフトウェアによって実施される。結果として、このシステムでのセキュリティ違反は全ての顧客のデータに影響を及ぼし、特に政府、医療、及び/又は金融規制の対象となる実体にとって追加のリスクを発生させる可能性がある。更に、1人の顧客に影響を及ぼす任意のデータベース動作が、そのデータベースを共有する全ての顧客に影響を及ぼす可能性がある。したがって、ハードウェア又はソフトウェアのエラーによる機能停止がある場合、この機能停止は全てのそのような顧客に影響を与える。同様に、データベースが1人の顧客のニーズに合わせてアップグレードされる場合、アップグレードプロセス中に全ての顧客が利用できなくなる。しばしば、そのようなメンテナンス期間は、共有されるデータベースのサイズが原因で長くなる。
対照的に、マルチインスタンスアーキテクチャは、各顧客に対し、専用のコンピューティングインスタンスにおいてその独自のデータベースを提供する。これにより、顧客データの混合を防ぎ、各インスタンスを独立して管理することが可能になる。例えば、ある顧客のインスタンスがエラー又はアップグレードによる機能停止を経験しても、他の計算インスタンスは影響されない。データベースには1人の顧客のデータしか含まないので、メンテナンスのダウン時間は限定される。更に、マルチインスタンスアーキテクチャのより単純な設計は、各顧客データベース及びインスタンスの冗長コピーが地理的に多様な方法で展開されることを可能にする。これにより、障害が検出されたとき又はメンテナンスが実行されているときに顧客のインスタンスのライブバージョンを移動できるような、高可用性を促進する。
いくつかの実施形態では、リモートネットワーク管理プラットフォーム320は、このプラットフォームを動作させるエンティティによって制御される1つ又は複数の中央インスタンスを含むことができる。計算インスタンスと同様に、中央インスタンスは、いくつかの数の物理的又は仮想的なサーバ及びデータベース装置を含むことができる。そのような中央インスタンスは、少なくともいくつかの計算インスタンスの間で共有できるデータのためのリポジトリとして機能することができる。例えば、計算インスタンス上で発生し得る共通のセキュリティ脅威の定義、計算インスタンス上で一般的に発見されるソフトウェアパッケージ、及び/又は計算インスタンスに展開され得るアプリケーションのためのアプリケーションストアが、中央インスタンス内に存在することができる。計算インスタンスは、このデータを得るために、明確に定義されたインターフェースを介して中央インスタンスと通信することができる。
複数の計算インスタンスを効率的な方法でサポートするために、リモートネットワーク管理プラットフォーム320は、単一のハードウェアプラットフォーム上に複数のこれらのインスタンスを実装することができる。例えば、aPaaSシステムがサーバクラスタ200などのサーバクラスタ上に実装された場合、それは様々な量の計算、記憶、及び通信リソースをインスタンス専用とする仮想マシンを動作させることができる。しかし、サーバクラスタ200の完全な仮想化は必要ではない場合もあり、他のメカニズムがインスタンスを分離するために使用されてもよい。いくつかの例では、各インスタンスは、サーバクラスタ200上に、専用アカウント及び1つ又は複数の専用データベースを有することができる。代替的に、計算インスタンス322は複数の物理装置にまたがることがある。
場合によっては、リモートネットワーク管理プラットフォーム320の単一のサーバクラスタが、複数の独立した企業をサポートすることができる。更に、後述するように、リモートネットワーク管理プラットフォーム320は、負荷分散、冗長性、及び/又は高可用性を促進するために、地理的に様々なデータセンタに展開された複数のサーバクラスタを含むことができる。
サードパーティネットワーク340は、アウトソーシングされた計算、データ記憶、通信、及びサービスホスティング動作のために使用できるリモートサーバ装置(例えば、サーバクラスタ200などの複数のサーバクラスタ)であり得る。これらのサーバは仮想化されてもよい(即ち、サーバは仮想マシンであってもよい)。サードパーティネットワーク340の例には、AMAZON WEB SERVICES(登録商標)及びMICROSOFT(登録商標)AZURE(登録商標)が含まれ得る。リモートネットワーク管理プラットフォーム320と同様に、サードパーティネットワーク340をサポートする複数のサーバクラスタは、負荷分散、冗長性、及び/又は高可用性を目的として、地理的に様々な場所に展開され得る。
管理対象ネットワーク300は、サードパーティネットワーク340の1つ又は複数を使用して、アプリケーション及びサービスをそのクライアント及び顧客に展開することができる。例えば、管理対象ネットワーク300がオンライン音楽ストリーミングサービスを提供する場合、サードパーティネットワーク340が、音楽ファイルを記憶し、ウェブインターフェース及びストリーミング機能を提供することができる。このように、管理対象ネットワーク300の企業は、これらの動作のためにそれ自体のサーバを構築し維持する必要がない。
リモートネットワーク管理プラットフォーム320は、サードパーティネットワーク340と統合してその中の仮想マシン及び管理対象サービスを管理対象ネットワーク300に公開するモジュールを含むことができる。そのモジュールは、ユーザが、仮想リソースを要求し、サードパーティネットワーク340についての柔軟なレポートを提供することを可能にすることができる。この機能を確立するために、管理対象ネットワーク300からのユーザは、まずサードパーティネットワーク340とのアカウントを確立し、関連リソースのセットを要求し得る。次いで、ユーザは、アカウント情報をリモートネットワーク管理プラットフォーム320の適切なモジュールに入力することができる。これらのモジュールは、次いで、アカウント内の管理可能なリソースを自動的に発見し、更に、使用、パフォーマンス、及び課金に関する報告を提供することもできる。
インターネット350は、グローバルインターネットの一部を表し得る。しかしながら、インターネット350は、代替的に、プライベートワイドエリア又はローカルエリアパケット交換ネットワークのような異なるタイプのネットワークを表すこともある。
図4は更に、管理対象ネットワーク300と計算インスタンス322との間の通信環境を示し、追加の特徴及び代替的実施形態を導入する。図4では、計算インスタンス322は、データセンタ400A及び400Bにまたがって複製されている。これらのデータセンタは、互いに地理的に離れており、場合によっては異なる都市又は異なる国にあってよい。各データセンタは、管理対象ネットワーク300及びリモートユーザとの通信を容易にするサポート機器を含む。
データセンタ400Aにおいて、外部装置との間のネットワークトラフィックは、VPNゲートウェイ402A又はファイアウォール404Aのいずれかを通って流れる。VPNゲートウェイ402Aは、インターネットプロトコルセキュリティ(IPSEC)又はトランスポート層セキュリティ(TLS)などのセキュリティプロトコルを介して、管理対象ネットワーク300のVPNゲートウェイ412とピア接続され得る。ファイアウォール404Aは、ユーザ414及びリモートユーザ416のような許可されたユーザからのアクセスを可能にし、許可されていないユーザへのアクセスを拒否するように構成され得る。ファイアウォール404Aを介して、これらのユーザは、計算インスタンス322に、場合によっては他の計算インスタンスにアクセスすることができる。ロードバランサ406Aは、計算インスタンス322をホストする1つ又は複数の物理又は仮想サーバ装置の間でトラフィックを分散させるために使用され得る。ロードバランサ406Aは、クライアント装置からデータセンタ400Aの内部構成(例えば、計算インスタンス322)を隠すことによって、ユーザアクセスを単純化することができる。例えば、計算インスタンス322が複数のデータベースへのアクセスを共有する複数の物理又は仮想コンピューティング装置を含む場合、ロードバランサ406Aは、どのコンピューティング装置又はデータベースも他より著しくビジーにならないように、ネットワークトラフィック及び処理タスクをこれらのコンピューティング装置及びデータベースにわたって分散させることができる。いくつかの実施形態では、計算インスタンス322は、VPNゲートウェイ402A、ファイアウォール404A、及びロードバランサ406Aを含むことができる。
データセンタ400Bは、データセンタ400A内の構成要素のそれ自体のバージョンを含むことができる。したがって、VPNゲートウェイ402B、ファイアウォール404B、及びロードバランサ406Bはそれぞれ、VPNゲートウェイ402A、ファイアウォール404A、及びロードバランサ406Aと同じ又は類似の動作を行うことができる。更に、リアルタイム又は準リアルタイムのデータベースレプリケーション及び/又は他の動作によって、計算インスタンス322はデータセンタ400A及び400B内に同時に存在することができる。
図4に示されるようなデータセンタ400A及び400Bは、冗長性及び高可用性を促進することができる。図4の構成では、データセンタ400Aがアクティブであり、データセンタ400Bがパッシブである。したがって、データセンタ400B内の計算インスタンス322のバージョンがほぼリアルタイムで更新されている一方で、データセンタ400Aは管理対象ネットワーク300との間の全てのトラフィックを処理している。両方のデータセンタがアクティブであるような他の構成もサポートされ得る。
データセンタ400Aが何らかの様式で失敗し又はユーザに利用できなくなった場合、データセンタ400Bがアクティブなデータセンタとして引き継ぐことができる。例えば、計算インスタンス322のドメイン名をデータセンタ400Aの1つ又は複数のインターネットプロトコル(IP)アドレスと関連付けるドメインネームシステム(DNS)サーバが、そのドメイン名をデータセンタ400Bの1つ又は複数のIPアドレスと再関連付けすることができる。この再関連付けが完了した後(1秒未満又は数秒かかることがある)、ユーザはデータセンタ400Bを介して計算インスタンス322にアクセスすることができる。
図4は、管理対象ネットワーク300の可能な構成も示す。上述のように、プロキシサーバ312及びユーザ414は、ファイアウォール310を介して計算インスタンス322にアクセスすることができる。プロキシサーバ312はまた、構成項目410にアクセスすることができる。図4では、構成項目410は、クライアント装置302、サーバ装置304、ルータ306、仮想マシン308、それらの上で実行される任意のアプリケーション又はサービス、並びに、装置、アプリケーション、及びサービスの間の関係のうちのいずれか又は全てを指すことができる。したがって、「構成項目」という用語は、任意の物理装置若しくは仮想装置、又はリモートで発見可能な若しくは計算インスタンス322により管理される任意のアプリケーション若しくはサービス、又は発見された装置、アプリケーション、及びサービスの間の関係の省略表現であり得る。構成項目は、計算インスタンス322の構成管理データベース(CMDB)内で表現することができる。
上述のように、VPNゲートウェイ412は、VPNゲートウェイ402Aに専用VPNを提供することができる。そのようなVPNは、管理対象ネットワーク300と計算インスタンス322との間にかなりの量のトラフィックがある場合、さもなければ、セキュリティポリシーがこれらのサイト間のVPNの使用を推奨又は要求する場合に、有用であり得る。いくつかの実施形態では、VPNを介して直接通信する管理対象ネットワーク300及び/又は計算インスタンス322における任意の装置に、パブリックIPアドレスが割り当てられる。管理対象ネットワーク300及び/又は計算インスタンス322内の他の装置には、プライベートIPアドレス(例えば、それぞれサブネット10.0.0.0/8及び192.168.0.0/16と略して表現される10.0.0.0~10.255.255.255又は192.168.0.0~192.168.255.255の範囲から選択されるIPアドレス)が割り当てられ得る。
IV.例示的な装置、アプリケーション、及びサービス発見
リモートネットワーク管理プラットフォーム320が管理対象ネットワーク300の装置、アプリケーション、及びサービスを管理するために、まず、リモートネットワーク管理プラットフォーム320は、管理対象ネットワーク300内にどのような装置が存在するか、これらの装置の構成及び動作状態、それらの装置により提供されるアプリケーション及びサービス、並びに発見された装置、アプリケーション、及びサービスの間の関係を決定することができる。上述のように、各装置、アプリケーション、サービス、及び関係は、構成項目と呼ばれ得る。管理対象ネットワーク300内の構成項目を定義するプロセスは、発見と呼ばれ、プロキシサーバ312によって少なくとも部分的に容易にされ得る。
本明細書の実施形態の目的では、「アプリケーション」は、1つ又は複数のプロセス、スレッド、プログラム、クライアントモジュール、サーバモジュール、又は装置若しくは装置のグループ上で実行される他の任意のソフトウェアを指すことができる。「サービス」とは、互いに関連して動作する1つ又は複数の装置上で実行される複数のアプリケーションによって提供される高レベルの能力を指すことがある。例えば、高レベルのウェブサービスは、複数のウェブアプリケーションサーバスレッドを含むことができ、これらのスレッドは、1つの装置上で実行され、別の装置上で実行されるデータベースアプリケーションからの情報にアクセスする。
図5Aは、構成項目がどのように発見されることが可能か、及び、発見された構成項目に関係する情報がどのように記憶されるかについての論理的な表現を示す。簡単にするため、リモートネットワーク管理プラットフォーム320、サードパーティネットワーク340、及びインターネット350は図示されていない。
図5Aにおいて、CMDB500及びタスクリスト502は計算インスタンス322内で記憶される。計算インスタンス322は、プロキシサーバ312に発見コマンドを送信することができる。応答として、プロキシサーバ312は、管理対象ネットワーク300内の様々な装置、アプリケーション、及びサービスに対してプローブを送信することができる。これらの装置、アプリケーション、及びサービスは、プロキシサーバ312に応答を送信することができ、次いでプロキシサーバ312は、発見された構成項目に関する情報を記憶するためにCMDB500に提供することができる。CMDB500に記憶された構成項目は、管理対象ネットワーク300の環境を表す。
タスクリスト502は、プロキシサーバ312が計算インスタンス322に代わって行うアクティビティのリストを表す。発見が行われると、タスクリスト502が設定される。プロキシサーバ312は、繰り返しタスクリスト502を照会し、リスト内の次のタスクを取得し、タスクリスト502が空になるか又は別の停止条件に達するまでこのタスクを実行する。
発見を容易にするために、プロキシサーバ312は、プロキシサーバ312を介して到達できる管理対象ネットワーク300内の1つ又は複数のサブネットに関する情報で構成されることが可能である。例えば、プロキシサーバ312は、サブネットとしてIPアドレス範囲192.168.0/24を与えられてよい。次いで、計算インスタンス322は、この情報をCMDB500に記憶し、これらの各アドレスにおける装置の発見のためにタスクリスト502にタスクを配置することができる。
図5Aはまた、構成項目504、506、508、510、及び512として、管理対象ネットワーク300内の装置、アプリケーション、及びサービスを示す。上述のように、これらの構成項目は、セットの物理及び/又は仮想装置(例えば、クライアント装置、サーバ装置、ルータ、又は仮想マシン)、それらの上で実行されるアプリケーション(例えば、ウェブサーバ、電子メールサーバ、データベース、又はストレージアレイ)、それらの間の関係、並びに複数の個別構成項目を含むサービスを表す。
タスクリスト502にタスクを配置することがトリガーとなって又は別様にプロキシサーバ312に発見を開始させる。代替的又は追加的に、発見は手動でトリガーされてもよく、トリガーイベントに基づいて自動的にトリガーされてもよい(例えば、1日1回の特定の時間に自動的に発見が開始してもよい)。
一般に、発見は、スキャン、分類、識別、及び探査という4つの論理フェーズで進行することができる。発見の各フェーズは、プロキシサーバ312により管理対象ネットワーク300内の1つ又は複数の装置に送信される様々なタイプのプローブメッセージを含む。これらのプローブに対する応答は、プロキシサーバ312によって受信され処理され、それらの表示はCMDB500に送信され得る。したがって、各フェーズの結果、より多くの構成項目が発見されてCMDB500に記憶され得る。
スキャンフェーズでは、プロキシサーバ312は、オープン伝送制御プロトコル(TCP)及び/又はユーザデータグラムプロトコル(UDP)ポートについて、IPアドレス内の指定された範囲の各IPアドレスをプローブして、装置の一般的なタイプを決定することができる。IPアドレスにおけるそのようなオープンポートの存在は、特定のアプリケーションがそのIPアドレスを割り当てられた装置上で動作していることを示すことができ、それにより、その装置によって使用されるオペレーティングシステムを識別することができる。例えば、TCPポート135が開いている場合、装置はWINDOWS(登録商標)オペレーティングシステムを実行している可能性が高い。同様に、TCPポート22が開いている場合、装置はLINUX(登録商標)などのUNIX(登録商標)オペレーティングシステムを実行している可能性が高い。UDPポート161が開いている場合、装置は簡易ネットワーク管理プロトコル(SNMP)を介して更に識別されることが可能であり得る。他の可能性もある。特定のIPアドレスにおける装置とそのオープンポートの存在がいったん発見されると、これらの構成項目はCMDB500に保存される。
分類フェーズでは、プロキシサーバ312は更に、発見された各装置をプローブして、そのオペレーティングシステムのバージョンを決定することができる。特定の装置に使用されるプローブは、その装置に関してスキャンフェーズ中に収集された情報に基づく。例えば、TCPポート22が開いている装置が見つかった場合、UNIX(登録商標)固有のプローブのセットが使用され得る。同様に、TCPポート135が開いている装置が見つかった場合、WINDOWS(登録商標)固有のプローブのセットが使用され得る。いずれの場合も、プロキシサーバ312が実行するためにタスクの適切なセットをタスクリスト502に配置することができる。これらのタスクは、特定の装置からの情報に対してプロキシサーバ312がログオン又は他のアクセスをする結果をもたらすことができる。例えば、TCPポート22が開いている場合、プロキシサーバ312は、特定の装置に対するセキュアシェル(SSH)接続を開始し、その上のオペレーティングシステムに関する情報をファイルシステム内の特定の場所から得るように指示されることが可能である。この情報に基づいて、オペレーティングシステムを決定することができる。例として、TCPポート22が開いているUNIX(登録商標)装置は、AIX(登録商標)、HPUX、LINUX(登録商標)、MACOS(登録商標)、又はSOLARIS(登録商標)として分類することができる。この分類情報は、CMDB500内に1つ又は複数の構成項目として記憶することができる。
識別フェーズでは、プロキシサーバ312は、分類された装置に関する特定の詳細を決定することができる。このフェーズ中に使用されるプローブは、分類フェーズ中に特定の装置に関して収集された情報に基づくことができる。例えば、装置がLINUX(登録商標)として分類された場合、LINUX(登録商標)固有のプローブのセットが使用され得る。同様に、装置がWINDOWS(登録商標)2012として分類された場合、WINDOWS(登録商標)2012固有のプローブのセットが使用され得る。分類フェーズの場合と同様に、プロキシサーバ312が実行するためにタスクの適切なセットをタスクリスト502に配置することができる。これらのタスクの結果、プロキシサーバ312は、特定の装置から、基本入出力システム(BIOS)情報、シリアル番号、ネットワークインターフェース情報、これらのネットワークインターフェースに割り当てられたメディアアクセス制御アドレス、その特定の装置により使用されているIPアドレスなどの情報を読み取ることができる。この識別情報は、CMDB500内に1つ又は複数の構成項目として記憶することができる。
探査フェーズでは、プロキシサーバ312は、分類された装置の動作状態に関して更なる詳細を決定することができる。このフェーズ中に使用されるプローブは、分類フェーズ及び/又は識別フェーズ中に特定の装置に関して収集された情報に基づくことができる。ここでも、プロキシサーバ312が実行するためにタスクの適切なセットをタスクリスト502に配置することができる。これらのタスクの結果、プロキシサーバ312が、特定の装置から、プロセッサ情報、メモリ情報、実行中のプロセス(アプリケーション)のリストなどの追加の情報を読み取ることができる。やはり、発見された情報は、CMDB500内に1つ又は複数の構成項目として記憶することができる。
ルータなどのネットワーク装置上で発見を実行するのにSNMPを利用することができる。発見は、実行中のプロセス又は他のアプリケーション関連情報のリストを決定することに代えて又は加えて、ルータに認識された追加サブネット、及びルータのネットワークインターフェースの動作状態(例えば、アクティブ、非アクティブ、キューの長さ、廃棄されたパケットの数など)を決定してもよい。追加のサブネットのIPアドレスは、更なる発見手順の候補になり得る。したがって、発見は反復的又は再帰的に進行することがある。
発見が完了すると、各発見された装置、アプリケーション、及びサービスのスナップショット表現がCMDB500で利用可能である。例えば、管理対象ネットワーク300内のクライアント装置、サーバ装置、及びルータについての、オペレーティングシステムバージョン、ハードウェア構成、及びネットワーク構成の詳細、並びにそれらの上で実行されているアプリケーションが、発見の後に記憶され得る。この収集された情報は、装置のハードウェア構成及び動作状態、並びに複数の装置及びアプリケーションにわたるサービスの特性をユーザが見ることを可能にするために、様々な方法でユーザに提示され得る。
更に、CMDB500は、構成項目間の依存関係及び関係性についてのエントリを含むことができる。より具体的には、特定のサーバ装置上で実行されているアプリケーション、並びにこのアプリケーションに依存するサービスが、CMDB500内でそのように表されることが可能である。例えば、データベースアプリケーションがサーバ装置上で実行されており、このデータベースアプリケーションが新入社員オンボーディングサービス及び給与計算サービスによって使用されていると想定する。したがって、そのサーバ装置がメンテナンスのために運用から外された場合、従業員オンボーディングサービス及び給与計算サービスが影響を受けることは明白である。同様に、構成項目間の依存関係及び関係性は、特定のルータが故障したときに影響を受けるサービスを表現することも可能であり得る。
一般に、構成項目間の依存関係及び関係性は、ウェブベースのインターフェース上に表示され、階層的な様式で表すことができる。したがって、そのような依存関係及び関係性の追加、変更、又は削除は、このインターフェースを介して達成することができる。
更に、管理対象ネットワーク300のユーザは、複数の発見された装置にわたって特定の協調アクティビティが行われることを可能にするワークフローを開発することができる。例えば、ITワークフローは、ユーザが全ての発見されたLINUX(登録商標)装置に対して共通の管理者パスワードを1回の操作で変更することを可能にし得る。
上述した方法で発見を行うために、プロキシサーバ312、CMDB500、及び/又は1つ若しくは複数の資格証明ストアが、発見される1つ又は複数の装置の資格証明を用いて構成され得る。資格証明は、装置にアクセスするために必要とされる任意のタイプの情報を含むことができる。これらは、ユーザID/パスワードの対、証明書などを含むことができる。いくつかの実施形態では、これらの資格証明は、CMDB500の暗号化されたフィールドに記憶することができる。プロキシサーバ312は資格証明の復号鍵を含むことができ、したがって、プロキシサーバ312はこれらの資格証明を使用して、発見される装置にログオン又は他のアクセスをすることができる。
発見プロセスは、図5Bにフローチャートとして示されている。ブロック520で、計算インスタンス内のタスクリストに、例えば、IPアドレスの範囲が設定される。ブロック522では、スキャンフェーズが行われる。それにより、プロキシサーバは、これらのIPアドレスを使用して装置のIPアドレスをプローブして、これらの装置で実行されているオペレーティングシステムを決定しようとする。ブロック524では、分類フェーズが行われる。プロキシサーバは、発見された装置のオペレーティングシステムのバージョンを決定しようとする。ブロック526では、識別フェーズが行われる。プロキシサーバは、発見された装置のハードウェア構成及び/又はソフトウェア構成を決定しようとする。ブロック528では、探査フェーズが行われる。プロキシサーバは、発見された装置の動作状態及び実行されているアプリケーションを決定しようとする。ブロック530では、発見された装置及びアプリケーションを表す構成項目の更なる編集が行われ得る。この編集は、本質的に自動及び/又は手動とすることができる。
図5Bに表されるブロックは例示を目的としている。発見は、より多い又はより少ないフェーズを有し得る高度に構成可能な手順とすることができ、各フェーズの動作は異なってもよい。場合によっては、1つ又は複数のフェーズがカスタマイズされてもよく、又は他のやり方で上記の例示的な説明から逸脱してもよい。
V.例示的ワークフロー設計ツール
本明細書で論じられるリモートネットワーク管理プラットフォームの計算インスタンスは、それぞれの管理対象ネットワークに代わってワークフローの指定及び実行を可能にすることができる。ワークフローとは、実行されたときに1つ又は複数の目標を達成するタスクの特定のシーケンス又は系列である。場合によっては、ワークフローは、1つ又は複数の開始状態、中間状態、及び終了状態が、それらの間の様々な遷移によって接続されるフローチャートとして表すことができる。状態によっては、0回訪問されることも複数回訪問されることもある。また、いくつかの状態は、複数の可能な次の状態を有してよく、それにより、ユーザ入力、自動入力、データベースに記憶された情報、又は他のメカニズムのいずれかに基づいて、ワークフロー内で決定が行われることを表す。また、状態間の特定の遷移、入力の取得、又は出力の生成を引き起こすトリガーが定義され得る。
そのようなワークフローは、ソフトウェアベースのワークフロー設計ツールを使用することによって計算インスタンス上に実装することができる。そのようなツールは、ワークフローの状態、遷移、トリガー、アクション、入力データ、出力データ、及び他の特性を定義するためのオプションを、ワークフロー設計者に提供する。ツールは、GUIを利用することができ、計算インスタンスに展開された一連の1つ又は複数のウェブページ及び/又はウェブベースアプリケーションとして具現化され得る。完了及び解放の後、管理対象ネットワークの従業員は、ワークフローを活用して、組織化された効率的な方法で様々なタスクを実行することができる。特に、ワークフロー設計ツールは、いわゆる「ローコード/ノーコード」ソリューションとすることができ、設計者は、ワークフローを実装するために書くプログラミングコードが非常に少ないか、又は全くなくてよい。
本明細書の実施形態は、一般的なワークフロー設計のサポートを提供するが、例示的なワークフロー設計ツールは、トリガー、アクション、及びワークフローロジックの特定の定義に基づいて実装され得る。トリガーは、データベースにおけるエントリに対する変更(例えば、CMDB内の構成項目の追加又は更新)などの、又はスケジュール(例えば、1日1回又は週1回)に従う、ワークフローを開始する条件を指定するために使用され得る。トリガーは、1つ又は複数のアクションを実行させ、各アクションは、アクションが実行されるために成立しなければならない条件を指定するワークフローロジックによって制御され得る。このアクションは、データベース内の情報の状態を変更すること、及びユーザに通知(例えば電子メール)を送ることなどを含むことができる。
場合によっては、サブフローが定義され、ワークフローに組み込まれ得る。サブフローは、フロー、別のサブフロー、又はスクリプト内からそれが開始されることを可能にする一連の再使用可能なアクション及び特定のデータ入力を含む、自動化又は半自動化されたプロセスであり得る。したがって、サブフローは複数のワークフローに適用することができる。
ワークフローの実例として、何らかの理由(例えば、従業員が辞める、解雇される、亡くなるなど)で従業員が企業を離脱した、従業員オフボーディング・シナリオを考える。ワークフローの目標は、(i)いなくなった従業員がオープンした保留中のカタログ要求(例えば、機器の要求)を検索して取り消すこと、(ii)いなくなった従業員に割り当てられているオープンタスク(例えば、承認待ち、達成すべき作業単位)をその管理者に再割り当てすることである。様々な実施形態において、より多い又はより少ない目標が存在し得る。
ワークフロー設計ツールは、設計者がワークフローを指定することを可能にする一連のGUIページを設計者に提示することができる。そのようなページの例が図6A~図6Jに示され、ワークフローの自動化テストの結果が図6Kに示されている。特に、これらの例は、例示を目的としており、限定することを意図していない。ワークフロー設計ツールは、ワークフローを設計するために使用可能な情報の代替配置を含む他のGUIを提供することが可能であり得る。
図6AはGUI600を示す。GUI600の背景は、計算インスタンスによってサポートされる特徴及び/又はアプリケーションを選択するためのウェブベースのメニューを示す。この背景は、ハッシュマークなどで示されている。
例えば、GUI600は、ユーザが検索語「ワークフロー(workflow)」を入力したダイアログボックス602を含む。これにより、メニュー604の下部からワークフロー設計ツールが選択される。この選択は、GUI600の上部に表示されるテキスト「ワークフロー設計者(Workflow Designer)」に反映される。
GUI600はまた、ポップアップウィンドウ606を含む。代替的に、ウィンドウ606は、別個のウィンドウでなくGUI600上に重ねられたペインであってもよい。いずれにせよ、ウィンドウ606は、ユーザがそのプロパティを指定することで新しいワークフローの作成を開始することを可能にする。GUI600において、これらのプロパティは、ワークフローの名前「オフボーディング(Offboarding)」、ワークフローのスコープ指定されたアプリケーション「ユーザ管理(User Management)」、ワークフローの説明「会社を離脱したユーザをオフボーディングする(Offboarding a user who has left the company)」、及びワークフローを保護すべきかどうかである。代替実施形態では、より多い又はより少ないプロパティが指定され得る。
ワークフローの名前は、ユーザが入力する自由形式のテキストであってよい。ワークフローのスコープ指定されたアプリケーションは、アプリケーションのドロップダウンメニューから選択されるか、又はグローバルとして指定され得る。GUI600におけるワークフローは、「ユーザ管理」にスコープ指定されたアプリケーションに限定されているため、このワークフローはこのアプリケーションの一部とみなされ得る。ワークフローの説明は、自由形式のテキストであってよい。ワークフローの保護は、他のワークフロー設計者若しくはユーザにより変更可能である(「無し」)又は読取り専用(「読取り専用(read-only)」)に指定する。
ウィンドウ606に入力された情報にユーザが満足すると、ユーザは、「完了(Done)」ボタンを選択するか又は別の方法でアクティブ化することができる。この選択は、このボタンが破線で示されることによって図6Aに示されている。ユーザがウィンドウ606のダイアログを完了すると、ユーザがトリガーを指定することを可能にするワークフロー設計ツールの次のフェーズが表示され得る。
図6Bは、GUI608におけるトリガー指定フェーズの第1の部分を示す。GUI608の上部で、ウィンドウ606に入力されたワークフローの名前「オフボーディング」が指定される。GUI608のこのセクションはまた、このワークフローが現在ドラフト形式であり、「ユーザ管理」にスコープ指定されたアプリケーションの一部であることを示している。GUI608は更に、ユーザがワークフローを編集、テスト、コピー、保存、及びアクティブ化することをそれぞれ可能にする一連のボタンを表示する。代替実施形態では、ワークフローに関する異なるタイプの情報が表示されてよく、異なる機能を有する可能性があるより多い又はより少ないボタンが存在してよい。
特に、読みやすくするために、GUI608(及び更なる全てのGUI)の背景からは、ハッシュマークが省略されている。また、「トリガー(Trigger)」という語は、トリガーが指定されていることを示すために通常の濃い色で示され、「アクション(Action)」という語は、アクションの指定が行われないことを示すためにより明るい色で示されている。
ポップアップウィンドウ610(ウィンドウ606と同様に、別のウィンドウではなくGUI608上に重ねられたペインであってもよい)は、ユーザがワークフローのトリガーを指定することを可能にすることができる。前述のように、2つの主要なタイプのトリガーがサポートされてよく、これらのタイプはメニュー612に示されている。レコードベースのトリガーは、1つ又は複数の特定のデータベースレコードに対する変更が発生したときにワークフローを実行させることができる。メニュー612に示されるように、これらの変更は、レコードの作成、レコードの更新、レコードの作成又は更新、及びレコードの削除を含むことができる。スケジュールされたトリガーは、1つ又は複数の指定された時間にワークフローを実行させることができる。メニュー612に示されるように、そのようなスケジュールは、毎日、毎週、毎月、(指定された時刻に)単に1回、又はユーザに指定された間隔で繰り返してワークフローをトリガーすることができる。
図6Bにおいて、メニュー612は、ユーザがレコードが更新されたときのトリガーを選択したことを破線で示す。これにより、選択されたトリガーの挙動を説明する情報ボックス614が表示される。
図6Cは、GUI616におけるトリガー指定フェーズの第2の部分を示す。GUI616は、図6Bに示された選択が確定されていると想定する。したがって、GUI616は、ポップアップウィンドウ618(ウィンドウ606と同様に、別のウィンドウではなくGUI616上に重ねられたペインであってもよい)を示し、それにより、ユーザがワークフローのトリガーを更に指定することを可能にすることができる。
ウィンドウ618は、複数のドロップダウンメニューを含み、そのいくつかは、GUI608からのユーザの選択に基づいて自動的に設定され得る。具体的には、トリガーメニュー620は、「更新(Updated)」オプションのユーザの選択を反映するように設定される場合があり、実行トリガーメニュー630は、レコードベースのトリガーが一度だけ実行されるように期待されることを反映するように設定される場合がある。それにもかかわらず、ユーザは、ウィンドウ618においてこれらの選択を変更することもできる。
テーブルメニュー622は、レコードが見つけられるデータベーステーブルをユーザが指定することを可能にする。図示されるように、このテーブルは、sys_userであり、会社内の従業員毎に1つのエントリを含むように想定されている。テーブルメニュー622は、1つ又は複数の使用可能なテーブルのリストを表示することが可能であり得る。
条件メニュー624、626、及び628は、ユーザが、ワークフローを実行させる選択されたテーブル内のレコードの条件を指定することを可能にする。この条件は、状態又は遷移であり得る。例えば、条件メニュー624は、レコードがアクティブでなければならないことを示すために「Active(アクティブ)」を指定し、条件メニュー626は、アクティブから変更されたレコードであることを示すために「changes from(変更元)」を指定し、条件メニュー628は、アクティブから別の状態に変更されたいずれのレコードも示すために「true(当てはまる)」を指定する。
様々な実施形態において、条件メニュー624は、sys_userテーブルにおける種々のフィールドに関するエントリを含むことができる。これらのフィールドは、電話番号、建物、市、部署、住所、管理者、役割などを含み得る。条件メニュー626は、「is(である)」、「is not(ではない)」、「is empty(空である)」、「is not empty(空でない)」、「is anything(何かである)」、「is same as(と同じ)」、「is different from(と異なる)」、「changes(変更)」、「changes from(変更元)」、「changes to(変更先)」、及び/又は他の様々な論理操作についてのエントリを含むことができる。条件メニュー628は、条件メニュー624及び626について行われた選択に文脈的に基づく項目に対するエントリを含むことができる。
全体として見ると、ウィンドウ618のトリガー指定は、sys_userテーブル内の任意のエントリがアクティブから別の状態(例えば、非アクティブ)に更新されるときに、ワークフローが一度実行されるべきことを示す。これは、ユーザがもはや会社のアクティブな従業員ではないことを示す。
図6Dは、GUI632におけるアクション指定の第1の部分を示す。特に、634において「トリガー」という語は、図6B及び図6Cで指定されたトリガーの説明を伴う。更に、このテキストは、トリガーがもはや指定の最中でないことを示すために灰色で表示される。
メニュー636に示されるように、ユーザは、アクション又はフローロジックを指定するオプションを有する。「アクション」ボタンの周りの破線は、アクションが指定されていることを示す。特に、メニュー636は、指定されているアクションのいくつかのコンテキストを表示する。例えば、「コア(Core)」アクションは、デフォルトで計算インスタンスによってサポートされており、「グローバル(Global)」アクションは、全てのコアアクション、アプリケーションベースのアクション、及び統合ベースのアクションを含む。アプリケーションベースのアクション、「App1」、「App2」、及び「App3」は、リモートネットワーク管理プラットフォーム上に構築されたそれぞれのアプリケーションによってサポートされるアクションである。これらには、例えば、様々な種類のITサービス管理、IT運用管理、顧客サービス管理、セキュリティ運用、及びCRMアプリケーションを含み得る。統合ベースのアクションは、リモートネットワーク管理プラットフォームに統合されたサードパーティアプリケーションによって定義又はサポートされるアクションを含む。これらは、例えば、仮想チャットアプリケーション、メッセージングアプリケーションなどを含み得る。これらの組み込み又はサードパーティアプリケーションのそれぞれは、ワークフロー設計ツールがこれらのアプリケーションのデータ及び/又は機能を含むワークフローをサポートできるように、ワークフロー設計ツールにインターフェース(「スポーク」と呼ばれる)を明示的に公開することができる。
図6Dにおいて、ユーザは「コア」コンテキストを選択している。この選択に基づいてサブメニュー638が表示される。このサブメニューは、「承認を求める(Ask for approval)」、「レコードを作成する(Create record)」、「タスクを作成する(Create task)」、「レコードを削除する(Delete record)」、「ログ(Log)」、「レコードを検索する(Look up records)」、「電子メールを送信する(Send email)」、「レコードを更新する(Update record)」、及び「条件を待つ(Wait for condition)」などの多くの特定のアクションから、ユーザが選択することを可能にする。これらから、ユーザは「レコードを検索する」を選択している。したがって、選択されたアクションを説明する情報ボックス640が表示され得る。
図6Eは、GUI642におけるアクション指定の第2の部分を示す。ポップアップウィンドウ644(ウィンドウ606と同様に、別のウィンドウではなくGUI642上に重ねられたペインであってもよい)は、レコードを検索するためのテーブル、及びこれらのレコードが満たさなければならない条件の指定を可能にすることができる。ウィンドウ644に示されるように、(図6Dで指定される)アクションは、レコードを検索することであり、この検索を実行するテーブルは、sc_request(ユーザにより行われるカタログ要求を含むテーブル)である。sc_requestから返されるレコードは、トリガーステップで識別されたユーザ(すなわち、アクティブステータスが変更されたユーザ)と「Requested for」フィールドが一致するレコードである。
図6Eはまた、先に定義されたトリガー及び現在定義されているアクションに従って配置されたピル形状のユーザインターフェース要素(「ピル(pills)」)を含むカラム646を示す。これらのピルは、点線の矢印で示されるように、カラム646から条件フィールドの最も右側の選択可能な項目648にドラッグされることが可能である。この文脈におけるユーザインターフェースピルは、典型的には、ワークフローで先に指定されたデータを参照する楕円形の項目であり、このデータはワークフロー設計ツールで指定されるので、ユーザインターフェースピルはユーザインターフェースに自動的に配置され得る。いくつかの実施形態では、(種々の形状を有する)ユーザインターフェースチップ又はタグが代わりに使用されてもよい。
特に、カラム646内の見出し「トリガー」の下の2つのピルは、トリガーによって返されたユーザレコード(例えば、図6Cで指定されたようにアクティブから別の状態に変更されたsys_userのエントリ)、及びトリガーが動作するテーブル(例えば、図6Cで指定されたようにsys_user)を参照する。カラム646内の見出し「アクション」の下の2つのピルは、図6Eで定義されているアクションによって見つけられたレコード、及びこれらのレコードが配置されたテーブル(例えば、sc_request)を参照する。
カラム646内のピルのようなユーザインターフェース要素は、ワークフローにおいて以前に指定された又は参照されたデータ又はテーブルへの参照をユーザが容易に含めることを可能にするので、ユーザがワークフローを指定するためにかなり便利である。このように、ユーザは、この情報への特定の参照を入力する必要はなく、代わりにピルをドラッグアンドドロップするだけでよい。
ユーザがウィンドウ644に入力された情報に満足すると、ユーザは「完了」ボタンを選択するか又は別の方法でアクティブ化することができる。この選択は、このボタンが破線で示されることによって図6Eに示されている。ユーザがウィンドウ644のダイアログを完了すると、ユーザがアクションのフローロジックを指定することを可能にするワークフロー設計ツールの次のフェーズが表示され得る。
図6Fは、GUI650におけるフローロジック指定を示す。フローロジックはアクションに関連付けることができ、アクションをどのように行うかを指定する。特に、652において、「アクション」という語は、図6D及び図6Eで指定されたアクションの説明で注釈される。
ポップアップウィンドウ654は、図6D及び図6Eで指定されたアクションによって返される一部又は全部の項目に対してワークフローが動作するかどうかの指定を可能にすることができる。「フローロジック(Flow Logic)」ボタンは破線で示されて、アクションではなくフローロジックが指定されていることを示している。この場合、ウィンドウ654で行われた選択は、図6Eで指定されたクエリから返された全ての項目に対してワークフローが動作することを示す。特に、ウィンドウ654の「対象(From)」フィールドにおける「1. [sc_request] Records」値は、652で指定されているアクション1の出力にフローロジックが適用されるべきことを示している。特に、「対象」フィールドの値は、ピルを含むカラムからピルがドラッグアンドドロップされることによって設定されてもよい。このカラムは、単純にするために図6Fには示されていないが、図6Eのカラム646に類似し得る。
ウィンドウ654に入力された情報にユーザが満足すると、ユーザは、「完了」ボタンを選択するか又は別の方法でアクティブ化することができる。この選択は、このボタンが破線で示されることによって図6Fに示されている。ユーザがウィンドウ654のダイアログを完了すると、ユーザがフローロジックに関するサブアクションを指定することを可能にするワークフロー設計ツールの次のフェーズが表示され得る。
図6Gは、GUI656におけるサブアクション指定を示す。特に、658において、「アクション」という語は、図6D、図6E、及び図6Fで指定されたアクション及びフローロジックの更新された説明が付いている。更に、このテキストは、フローロジックがもはや指定の最中でないことを示すためにグレー表示される。特に、サブアクション指定はメニュー636及びサブメニュー638を再度表示し、今度は「コア」及び「レコードを更新する(Update record)」が選択される。したがって、GUI656は、図6D及び図6Eで定義されたアクションによって返される各項目についてレコードが更新されるようにユーザが指定することを示している。
図6Hでは、GUI660におけるこのサブアクション指定を継続する。ポップアップウィンドウ662は、図6Fで指定されたフローロジックによって返される項目に対して行われるアクションの指定を可能にすることができる。特に、ウィンドウ662に示されるオプションは、トリガーによって返されるsys_userテーブル内の各レコードについて、同じユーザに対して要求されたsc_requestテーブル内の任意のレコードが更新されることを示す。ユーザはまた、一致するレコードに対して更新される2つのフィールドを指定する。「要求状態(Request state)」フィールドは、いなくなった従業員の保留中のカタログ要求を取り消すために「Closed cancelled(クローズドキャンセル)」に更新されることになる。「コメント(Comments)」フィールドも、要求が取り消された理由を示すために「ユーザはシステムにおいてもはやアクティブではない(User no longer active in the system)」に更新される。
特に、「レコード(Record)」フィールドの値は、ピルを含むカラムからピルがドラッグアンドドロップされることによって設定されてもよい。このカラムは、単純にするために図6Hには示されていないが、図6Eのカラム646に類似し得る。
ウィンドウ662に入力された情報にユーザが満足すると、ユーザは、「完了」ボタンを選択するか又は別の方法でアクティブ化することができる。この選択は、このボタンが破線で示されることによって図6Hに示されている。
図6Iは、これまで定義されたワークフローを示しているGUI664を示す。666において、図6D、図6E、図6F、図6G、及び図6Hに指定されたアクションが表示される。それは、ステップ1(トリガーによって識別された従業員に対して要求されたsc_requestテーブル内のレコードを検索する)、2(これらのレコード毎に、ステップ/サブアクション2.1を実行する)、及び2.1(これらのレコードを閉じて適切なコメントを追加することによって更新する)に分けられる。
上記で紹介した望ましいワークフローの残り部分は、いなくなった従業員に割り当てられた全てのタスクをその人物の管理者に再割り当てすることも含む。この更なるステップが図6Jに示される。ある程度の繰り返しを避けるために、アクション、フローロジック、及びタスク再割り当てのサブアクションを指定するGUIは省略する。代わりに、図6Jは、完全なワークフローを示すために更新されたGUI664を示す。
特に、ステップ3では、タスクデータベーステーブル(従業員によって実行されるタスクについてのエントリを含む)におけるレコードを検索し、これらのレコードは、トリガーによって識別された従業員に割り当てられる。ステップ4は、これらのレコードのそれぞれに対して、ステップ/サブアクション4.1が実行されることを示すフローロジックを指定する。ステップ4.1は、ステップ4で識別された各レコードについて、「Assigned to(割り当て先)」フィールドが識別された従業員の管理者へ変更されることを示す。
このようにして、任意の複雑なフローチャート状のワークフローをデータ中心の方法で迅速に設計することができる。設計者は、コードを全く書く必要がなく、適切なメニュー及び他のインターフェース要素を用いて設計者を助ける一連のGUIによってワークフロー指定に導かれる。結果として、設計者はかなりの量の時間を節約する。実際に、ワークフローを高水準プログラミング言語(例えば、JAVA(登録商標)、JAVASCRIPT(登録商標)、C++など)で手動でコーディングするのに通常必要とされる日数ではなく時間単位で指定できることが、実験で示されている。
このワークフロー設計ツールの別の利点は、展開前に同じGUIによってワークフローをテストできることである。図6Kは、図6JからのGUI660と同じ情報を含むGUI668を示しているが、そのようなテストの結果を反映する3つの列も含む。「状態(State)」列は各ステップが完了されたかどうか(この例では、全てのステップが完了されている)を示し、「開始時刻(Start time)」列は各ステップが開始された時刻を示し、「継続時間(Duration)」列は各ステップが実行されるのに要した時間をミリ秒単位で示す。これにより、設計者は各ステップが適切に実行されていることを確認し、完了するのに過度の時間がかかるステップを識別することが可能になる。代替実施形態では、他の情報が表示されてよい。
図6A~図6Kの例においてワークフローが設計されている。そのようなプロセスを実行するユーザのペルソナは、ワークフロー設計者と呼ばれることがある。しかしながら、アクション設計者のペルソナを有するユーザによって、アクションが類似の方法で(例えば、同様のGUIを介して)設計されてよい。したがって、アクション設計者は、公開可能なカスタムアクションを定義することができ、公開されたアクションは選択され、ワークフロー設計者によってワークフローに組み込まれることが可能である。
VI.動的入力を有するアクション設計ツール
上述のように、現在のワークフローツールの欠点は、それらが既知のサードパーティ・スキーマでのみ動作するようにハードコーディングされており、これらのスキーマのカスタマイズをサポートするためのこれらのツールに対するいかなる変更も、プログラムコードの書き込み及びテストを必要とすることである。そうすることは、経験豊富なソフトウェア技術者にとっても時間がかかり、エラーを起こしやすく、技術者でないユーザにとって参入障壁となる。
本明細書の実施形態は、ワークフローが設計されているときに当初は未知であり得るスキーマをワークフローに組み込むことを可能にすることによって、これらの問題に対処する。これを行う1つの方法は、図7A~図7Fの文脈で後述されるように、動的入力を有するアクション設計ツールによるものである。
これらの図(及び図8A~図8F)で示される実施形態に関して想定されるシナリオでは、企業が、架空のrgb-hr.comのリモート・サードパーティHRサービスを使用している。この例では、rgb-hr.comは、予め定義されたテーブル及びフィールドを有するアウトソーシングHRデータベースを提供する。フィールドは、企業がその従業員の名前、住所、年齢、個人識別情報などを指定することを可能にすることができる。rgb-hr.comサービスは、表現状態転送(REST)APIや簡易オブジェクトアクセスプロトコル(SOAP)APIなどの様々なアプリケーションプログラミングインターフェース(API)を介して、これらのテーブルへのアクセスを提供することができる。そのような情報にアクセスする他の方法には、SSH、Javaデータベース接続(JDBC)、POWERSHELL(登録商標)などが含まれ得る。したがって、情報は、企業に対しオンプレミス又はリモートでアクセス可能であり得る。更に、rgb-hr.comサービスは、個々の企業が、フィールドの追加、フィールドの削除、及び/又はフィールドの名前の変更、並びにテーブルの追加、テーブルの削除、及び/又はテーブルの名前の変更を行うことによって、それらのテーブルをカスタマイズすることを可能にすることができる。
例えば、企業は、バッジ識別番号、プロフェッショナル登録番号、証明書のリストなどを含むように、従業員テーブルにカスタムフィールドを追加してもよい。したがって、企業がそのようなカスタマイズを行う場合、新しいフィールドがそこに統合できるようにワークフロー定義をサポートするプログラムコードを開発する必要もある。そうでなければ、ワークフローがカスタムフィールドにアクセスできなくなり、又はカスタムフィールドを使用できなくなり、これらのワークフローの有用性が劇的に低下する可能性がある。
図7Aは、動的入力を有するアクション設計ツールのための例示的なGUI700を示す。例示的GUI700は、アクション概要を提供するペイン702と、ユーザがアクション入力を定義することを可能にするペイン704とを含む。GUI700は、水平に配置された2つだけのペインを含むが、より多い又はより少ないペインが様々な配置で表示され得る。
ペイン702は、REST API呼び出しをリモートサービスに送信し、関連する応答を受信することを含むアクションについてのアクション定義のステップを含む。それに応じて、ペイン702は現在定義されているステップを強調し、そのステップはペイン704でより詳細に示される。その点で、ペイン702は、シェーディングで示されているように入力ステップを強調している。そして、ペイン704は、アクションに対する入力(この場合、リモートサービスに関連する動的入力)をユーザが定義するためのオプションを提供する。
本明細書では詳細に図示又は説明しないが、ペイン702の他のステップは、アクションを完全に指定できるように、ペイン704上に異なる情報を表示することを含むことができる。タスク作成ステップは、潜在的には、定義された入力のいくつかを使用して、計算インスタンス内にタスクレコード(例えば、特定の個人又はグループによって実行される作業の単位を表す)を作成する働きをすることができる。RESTステップは、REST APIのURL並びに/又はREST呼び出しのヘッダ及びペイロードなどの、RESTクエリのパラメータを定義することを含む。JSON解析ステップは、REST呼び出しから受信されたJavaScriptオブジェクト表記(JSON)に従ってフォーマットされたデータがどのように解析されるかを定義することを含み、例えば、どの要素が更に使用され、どの要素が無視できるかを定義する。出力ステップは、アクションの出力を定義することを含み、例えば、リモートネットワーク管理プラットフォーム内でデータベースにどのような値が書き込まれるかなどを定義する。
実例として、アクションは、入力ステップにおいてrgb-hr.comサービス内の対象のリモートアクセス可能なテーブル及びフィールドを指定することと、タスク作成ステップを定義することと、RESTステップにおいてrgb-hr.comサービスのREST URLを指定することと、JSON解析ステップにおいてREST呼び出しによって返された対象のJSON要素を定義することと、出力ステップにおいてこれらのJSON要素をローカルデータベーステーブル及びフィールドにマッピングすることとを含むことができる。他の実施形態も可能であり得る。
ペイン704は、入力を指定するための列のセットを含む。ラベル列706は、入力のソースを示し、タイプ列708は、関連する入力が(例えば、メニューからの)動的選択に基づくか、それとも(例えば、キー値ペアのリストからの)動的テンプレートに基づくかを示し、必須列710は、関連する入力の存在が必要であるかどうかを示す。図7Aに示されるように、各入力は「削除(delete)」ボタンにも関連付けることができ、このボタンが選択又は他の方法でアクティブ化されると、入力が除去される。また、各入力の右端にある更なるドロップダウン矢印により、他の関連付けを入力と行うことが可能になる。
入力作成ボタン712は、選択又は他の方法でアクティブ化されると、GUI700が入力ステップから離れるようにし、自動的にタスク作成ステップに進むことができる。換言すれば、このボタンを選択又はアクティブ化することにより、ペイン702の入力ボックスを強調解除させ、ペイン702のタスク作成ボタンを強調させ、タスクを作成するためのオプションをペイン704に表示させることができる。
入力714及び716は、それぞれのソースを指定するために、(例えば、ラベルフィールドの左にあるドロップダウン矢印を選択又は他の方法でアクティブ化することによって)展開され得る。例えば、図7Bは、ペイン704上に高度なオプション720及び動的アクション入力722を表示するように展開された入力714を示している。
高度なオプションフィールド720は、名前フィールド、最大長フィールド、選択表示フィールド、ヒントフィールド、及びデフォルト値フィールドを含む。これらのフィールドは、設計されているアクションがワークフロー設計GUIページでどのように使用されるのかを定義する。名前フィールドは、入力の名前(「myTable」)を指定し、最大長フィールドは、選択肢フィールド内のオプションの最大文字長を指定し(より長いオプションを切り詰め)、選択フィールドは、(図示されるように、「無し」オプションを有しないドロップダウンメニューから)どのように入力選択肢が選択されるかを定義し、ヒントフィールドは、定義されている入力についての任意選択の簡単な説明を可能にし、デフォルトフィールドは、入力のデフォルト値が提供されるのを可能にする。
動的アクション入力722は、別の予め定義されたアクションの出力がこの入力で使用されることを可能にする。アクションフィールドは、そのようなアクションの選択を可能にする。アクションフィールドの右側にあるドロップダウン矢印を選択し又は他の方法でアクティブ化すると、ドロップダウンメニューを表示させることができる。
図7Cは、そのようなドロップダウンメニュー730を示す。ユーザがテキストを入力できる検索フィールドに加えて、ドロップダウンメニュー730は、rgb-hr.comテーブル又はrgb-hr.comテーブルからのフィールドを動的に取得するためのオプションを含む。更なる実施形態では、ドロップダウンメニュー730は、他のリモートサービスから、ユーザの計算インスタンス内のデータベースから、又はリモートネットワーク管理プラットフォームの他の計算インスタンスから、テーブル及び/又はそのフィールドを得るような、任意の数の予め定義されたアクション又はサブアクションを含んでよい(ここで、アクションは1つ又は複数の個別のサブアクションを含んでよい)。
特に、rgb-hr.comテーブルを得るための予め定義されたアクションは、ワークフローに組み込まれたとき、rgb-hr.comサービスからテーブルのリストを動的に取得するように構成され得る。更に、rgb-hr.comテーブルフィールドを得るための予め定義されたアクションは、ワークフローに組み込まれたとき、これらのテーブルの選択された1つにおけるフィールドのリストを動的に取得するように構成され得る。「myTable」変数は、選択されたテーブルの名前を含むことができる。
rgb-hr.comテーブルを動的に取得するためのオプションのシェーディングで示されているように、このオプションは選択されている。このようにして、入力714は、rgb-hr.comから動的に取得されたテーブルのリストとなるように構成され得る。
図7Dでは、引き続きアクション設計を例示しており、(ユーザがその定義を完了したときに)折り畳まれた入力714と、展開された入力716とを示す。したがって、図7Dでは、ペイン704上に高度なオプション740及び動的アクション入力742が示される。
高度なオプション740は、名前フィールド及びヒントフィールドを含む。名前フィールドは、入力の名前(「Fields」)を指定し、ヒントフィールドは、定義されている入力についての任意選択の簡単な説明を可能にする。
動的アクション入力742は、別の予め定義されたアクションの出力がこの入力で使用されることを可能にする。アクションフィールドは、そのようなアクションの選択を可能にする。アクションフィールドの右側にあるドロップダウン矢印を選択し又は他の方法でアクティブ化すると、ドロップダウンメニューを表示させることができる。
図7Eは、そのようなドロップダウンメニュー744を示す。ユーザがテキストを入力できる検索フィールドに加えて、ドロップダウンメニュー744は、rgb-hr.comテーブル又はrgb-hr.comテーブルからのフィールドを動的に取得するためのオプションを含む。更なる実施形態では、ドロップダウンメニューは、他のリモートサービスから、ユーザの計算インスタンス内のデータベースから、又はリモートネットワーク管理プラットフォームの他の計算インスタンスから、テーブル及び/又はそのフィールドを得るような、任意の数の予め定義されたアクション又はサブアクションを含んでよい。
上述のように、rgb-hr.comテーブルを得るための予め定義されたアクションは、ワークフローで実行されたとき、rgb-hr.comサービスからテーブルのリストを動的に取得するように構成され得る。また、rgb-hr.comテーブルフィールドを得るための予め定義されたアクションは、ワークフローで実行されたとき、これらのテーブルの特定の1つにおけるフィールドのリストを動的に取得するように構成され得る。
rgb-hr.comテーブルからフィールドを動的に取得するためのオプションのシェーディングで示されているように、このオプションは選択されている。このようにして、入力716は、rgb-hr.comからの特定のテーブルに現れる動的に取得されたフィールドのリストとなるように構成され得る。
ここで、図7Fでは、引き続きアクション設計を例示し、アクションは、「myTable」変数によって参照されるテーブルからフィールドのリストを取得するように指定される。言い換えれば、入力716の可能な値は、ワークフロー設計フェーズ中に選択されたテーブルに基づいて動的に決定される。特に、ユーザは、入力716を入力714にリンクさせるために「他の入力に依存する(Depends on another input)」というタイトルのボックスにチェックを入れている。
図7A~図7Fに示されるようにGUI700を使用して、ユーザは、ワークフローにおけるテーブル及び/又はテーブルのフィールドの動的選択を可能にするアクションを定義することができる。しかし、アクション設計ツールのこれらの実施形態は、ウェブサイト、ウェブコンポーネント、ファイルなどからの動的入力のような、テーブルベースでない動的入力を指定するために、他の方法で使用されることも可能である。更に、GUI700の内容及び配置は例示の目的で提示されており、他の内容及び配置も可能であり得る。
ユーザは、上述され図7A~図7Fに示された動的入力定義プロセスを完了すると、ペイン702に示されるステップを使用して残りのアクションを定義することができる。すなわち、ユーザは、REST API呼び出し、呼び出しから返されるJSONフォーマット情報がどのように解析されるか、及びこの情報(又は他の情報)のどれがこのアクションの出力として提供されるべきかを定義することができる。
VII.動的入力によるアクションのワークフローへの統合
動的アクションは、非動的(静的)アクションと同様の方法でワークフローに統合することができる。この統合プロセスは、従業員のオフボーディングの例を使用して図8A~図8Fに示される。
特に、図8AのGUI800は、図6DのGUI632の場合と類似している。図8Aでは、トリガーは802で示されるように定義されている。このトリガーは、(ユーザの計算インスタンスの)sys_userテーブル内の任意のエントリがアクティブから別の状態(例えば、「偽」又は「非アクティブ」)に更新されると、ワークフローが一度実行されることを示す。これに応答して、アクションが行われる。図6D~図6Iで指定されたアクションとは異なり、このアクションは動的入力を有する。
メニュー804に示されるように、ユーザは、アクション又はフローロジックを指定するオプションを有する。「アクション」ボタンの周りの破線は、アクションが指定されていることを示す。特に、メニュー804は、このアクションに関するいくつかのコンテキストを表示する。ユーザは「rgb-hr.com」オプションを選択しており、このオプションは、ワークフローが、rgb-hr.comサービスからのデータにアクセスし、rgb-hr.comサービスにデータを書き込むことを可能にする統合ベースのオプションである。この選択に基づいてサブメニュー806が表示される。このサブメニューにより、ユーザは、「レコードを作成する」、「レコードを削除する」、「レコードを検索する」、「レコードを更新する」など、複数の特定のアクションからの選択をすることができる。これらから、ユーザは「レコードを作成する」を選択している。したがって、選択されたオプションを説明する情報ボックス808が表示され得る。特に、「レコードを作成する」アクションは、図7A~図7Fに示すように設計された動的アクションである(又はそれに関連する)。
図8Bは、「レコードを作成する」アクションが選択された後のGUI800を示す。このアクションは動的であり、(図7B及び図7Cで定義されたような)rgb-hr.comサービスからのテーブルのリストを得ることを含むので、このリストは、ワークフロー設計中に動的に設定される。特に、リストの動的設定は、rgb-hr.comサービスからテーブルのリストを得る動的選択として入力714が定義されることによって引き起こされる。
したがって、図8Bは、「rgb-hr.comにおいてレコードを作成する」アクション810が選択されており、テーブル名812及びフィールド814が未決定のままであることを示す。特に、テーブル名812のセレクタの右側のプログレススピナーは、rgb-hr.comサービスがテーブル名のリストについて動的に照会されていることを示す。したがって、テーブル名812は、このクエリが完了するまでグレー表示され、フィールド814は、テーブルが選択されるまでフィールドが指定できないのでグレー表示される。
特に、このアクションで動的入力をサポートしていない場合、定義されているワークフローにおいて、テーブルの予め決定された(例えば、ハードコーディングされた)リストのみがアクセスされ得る。図7A~図7Fに従って定義されたアクションの動的入力により、rgb-hr.comサービスを介して利用可能な任意のテーブルがアクセスされ、ワークフローによって使用されることが可能になる。
図8Cは、クエリが完了した後のGUI800を示す。したがって、テーブル名812は、ドロップダウンメニュー820を表示するために選択又は他の方法でアクティブ化され得る。ユーザがテキストを入力できる検索フィールドに加えて、ドロップダウンメニュー820は、前述のクエリから動的に得られたrgb-hr.comサービスのテーブルに対するセレクタを含む。したがって、この例では、ドロップダウンメニュー820は、「アカウント(Accounts)」、「ユーザ(Users)」、「アセット(Assets)」、及び「タスク(Tasks)」テーブルのエントリを表示する。様々な実施形態において、より多い又はより少ないテーブルが、rgb-hr.comサービスを介して利用可能であり、したがって、ドロップダウンメニュー820に表示され得る。
図8Cは、選択されている「ユーザ」テーブルを示す。したがって、図8Dは、この選択がされた後のGUI800を示し、特に、テーブル名812は、選択された「ユーザ」テーブルを示している。「rgb-hr.comにおいてレコードを作成する」アクション810は動的入力を含み、フィールド814は入力716に関連するので、テーブル「ユーザ」のフィールドのリストが動的に得られる。特に、フィールド814のセレクタの右側のプログレススピナーは、rgb-hr.comサービスがフィールドのリストについて動的に照会されていることを示す。したがって、フィールド814はグレー表示される。
このアクションで動的入力をサポートしていない場合、定義されているワークフローにおいて、サポートされたテーブルのフィールドの予め決定された(例えば、ハードコーディングされた)リストのみがアクセスされ得る。図7A~図7Fに従って定義されたアクションの動的入力により、rgb-hr.comサービスを介して利用可能な任意のテーブルの任意のフィールドがアクセスされ、ワークフローによって使用されることが可能になる。
図8Eは、クエリが完了した後のGUI800を示す。したがって、「ユーザ」テーブルのフィールドのリストが示されている。特に、フィールド830、832、834は、レコードが作成されるために設定されなければならない必須フィールドであり得る。ユーザは、これらのフィールドの右側にあるテキストボックスに値を手動で入力することができ、又はトリガー若しくはワークフロー(図示せず)の以前のアクションから値を選択することができる。フィールド値を追加する(Add field value)オプション836は、ユーザが表示及びデータエントリのための追加フィールドを選択できるように展開可能である。ユーザは、この時点でアクションの統合を終えた場合、GUI800の右下にある「完了」ボタンを選択又は他の方法でアクティブ化することができる。
図8Fは、GUI800において、追加フィールド値オプション836が選択又は他の方法でアクティブ化されていることを示す。新しいフィールド840がディスプレイに追加されている。選択又は他の方法でアクティブ化されると、新しいフィールド840はドロップダウンメニュー842を表示する。ユーザがテキストを入力できる検索フィールドに加えて、ドロップダウンメニュー842は、前述のクエリから動的に得られた「ユーザ」テーブルのフィールドに対するセレクタを含む。したがって、この例では、ドロップダウンメニュー842は、「アドレス(Address)」、「アクティブ(Active)」、及び「建物(Building)」フィールドのエントリを表示する。様々な実施形態において、より多い又はより少ないフィールドが、このテーブルに関してrgb-hr.comサービスを介して利用可能であり、したがって、ドロップダウンメニュー842に表示され得る。
図8Fは、ユーザが「アクティブ」フィールドを選択したことを示している。図8Fに明示的に示されていないが、そうすることにより、新しいフィールド840を「アクティブ」フィールドとして設定することができ、したがって、ユーザは、その関連するテキストボックスに(又は、他のメカニズムによって)データを入力することができる。例えば、従業員オフボーディングの例では、このフィールドの値は「偽」又は「非アクティブ」に設定され得る。ユーザは、この時点でアクションの統合を終えた場合、GUI800の右下にある「完了」ボタンを選択するか又は別の方法でアクティブ化することができる。
したがって、動的入力によるアクションをワークフローに統合することができる。統合フェーズ中に、指定されたリモート(又はローカル)サービスは、そのプロパティ(例えば、テーブル及びフィールド)を決定するために照会される。このようにして、これらのプロパティは、ユーザが各プロパティとのインターフェースを明示的にサポートするためのコードを書くことなく、ワークフローによって使用できることになる。更に、これらのプロパティは時間経過と共に変化する(例えば、新しいテーブル及び/又はフィールドがrgb-hr.comサービスに追加される)が、それらをサポートするコードを書く必要はなく、変更されたプロパティにアクセスするために新しいアクションがユーザフレンドリーな方法で定義可能である。したがって、本明細書の実施形態は、完全にGUIを介する動的入力によるアクションの定義をサポートする。
VIII.アクション設計、ワークフロー設計、及びワークフロー実行フェーズ
図9は、本明細書に説明されているようなアクション設計、ワークフロー設計、及びワークフロー実行フェーズの特徴の図である。様々な実施形態において、これらのフェーズは、より多い又は少ない特徴を含み得る。
アクション設計フェーズ900は図7A~図7Fに示されている。そこで、ユーザは、1つ又は複数の動的入力、及び動的入力として使用されるデータを提供するリモートサービスAPIを指定する。また、ユーザは、このデータの解析及び記憶ルールを指定することができ、それにより、動的入力を、例えば、ユーザの計算インスタンス内のデータベーステーブルのフィールドに書き込むことが可能になる。設計されたアクションは、次いで、1つ又は複数のワークフローに後で組み込むために、(例えば、ユーザの計算インスタンスのデータベースにも)記憶される。
ワークフロー設計フェーズ902は図8A~図8Fに示されている。そこで、ユーザはトリガー及びフローを指定する。フローは、設計されたアクションを含むことができる。その場合、(アクション設計フェーズで定義されるような)動的入力についてのオプションは、リモートサービスAPIを介して動的に取得される。ユーザは、更なるフロー、サブフロー、及びアクションを指定し、次いで、設計されたワークフローを(例えば、ユーザの計算インスタンスのデータベースにも)記憶することができる。
ワークフロー実行フェーズ904は、図6A~図6Kに示されており、(例えば、ユーザの計算インスタンスによって)自動的に実行され得る。トリガーが起動したと決定されると、ワークフローが実行される。これは、ワークフロー設計フェーズで指定されたような入力による設計アクションの実行を含む。ワークフローの一部である他の任意のフロー、サブフロー、及びアクションも実行され得る。
IX.例示的動作
図10は、例示的実施形態を示すフローチャートである。図10に示すプロセスは、コンピューティング装置100などのコンピューティング装置、及び/又はサーバクラスタ200などのコンピューティング装置のクラスタによって実行され得る。しかしながら、このプロセスは、他のタイプの装置又は装置サブシステムによって実行することもできる。例えば、このプロセスは、ラップトップ又はタブレット装置のようなポータブルコンピュータによって実行されてもよい。
図10の実施形態は、そこに示された特徴の任意の1つ又は複数を除去することによって簡略化され得る。更に、これらの実施形態は、前述の図のいずれかの又は本明細書に他の形で記載されている特徴、態様、及び/又は実装と組み合わせられ得る。
ブロック1000は、サーバ装置によって、クライアント装置に対して、ワークフローに統合されるように構成されたアクションを定義するアクション設計GUIの第1のバージョン上に表示するために、リモートサービスのAPIから動的に取得されることになる入力情報の第1のセットの選択を可能にする第1のメニューを提供することを含むことができる。動的取得は、ワークフローの設計中に行われ、リモートサービスは、サーバ装置及びクライアント装置とは物理的に異なる。
ブロック1002は、場合によっては入力情報の第1のセットの選択を受け取ることに応答して、サーバ装置によって、クライアント装置に対して、アクション設計GUIの第2のバージョン上に表示するために、ワークフローの設計中にAPIから動的に取得されることになる入力情報の第2のセットの選択を可能にする第2のメニューを提供することを含むことができる。入力情報の第2のセットは、入力情報の第1のセットの選択と関係付けられる。
ブロック1004は、場合によっては入力情報の第2のセットの選択を受け取ることに応答して、サーバ装置によって、クライアント装置に対して、アクション設計GUIの1つ又は複数の更なるバージョン上に表示するために、API、APIにリモートでアクセスする方法、及びAPIから受け取ったデータを解析する方法を指定するためのオプションを提供することを含むことができる。
ブロック1006は、サーバ装置によって、永続ストレージに対して、入力として入力情報の第1のセット及び入力情報の第2のセットを含むアクションの定義を書き込むことを含むことができる。
いくつかの実施形態では、ワークフローの設計中にAPIから動的に取得されることになる入力情報の第1のセットは、リモートサービスによって提供されるテーブルのリストである。
いくつかの実施形態では、アクション設計GUIの第1のバージョンは、ワークフローの設計中にテーブルのリストがどのように表示されることになるかに関するセレクタを更に含み、セレクタは、テーブルのリストのドロップダウンメニュー及びデフォルト値の指定を可能にする。
いくつかの実施形態では、ワークフローの設計中にAPIから動的に取得されることになる入力情報の第2のセットは、テーブルのリストからのテーブルにおけるフィールドのリストである。
いくつかの実施形態は更に、(i)ワークフロー設計GUIの第1のバージョン上に表示するために、ワークフローに組み込まれることが可能な予め定義されたアクションのリストからのアクションの選択を可能にする第3のメニューを提供することと、(ii)場合によってはアクションの選択を受け取ることに応答して、APIを介して、テーブルのリストを動的に取得することと、(iii)アクションの定義に基づいて、ワークフロー設計GUIの第2のバージョン上に表示するために、テーブルのリストからのテーブルの選択を可能にする第4のメニューを提供することと、(iv)アクションの定義に基づいて、及びテーブルのリストからのテーブルの選択を受け取ることに応答して、APIを介して、テーブルにおけるフィールドのリストを動的に取得することと、(v)アクションの定義に基づいて、ワークフロー設計GUIの第3のバージョン上に表示するために、フィールドのリストからのフィールドに対して手順が行われることを可能にする第5のメニューを提供することと、(vi)手順が行われた後にテーブルとフィールドの値とを含むワークフローの定義を永続ストレージに書き込むこととを含むことができる。
いくつかの実施形態では、フィールドに対して行われる手順は、フィールドの値を指定又は変更することを含む。
いくつかの実施形態では、ワークフロー設計GUIの第3のバージョンは、フィールドのリストからのフィールドの選択を可能にする。
いくつかの実施形態では、ワークフロー設計GUIの第3のバージョンは、必要であると予め定義されているフィールドのリストからの1つ又は複数のフィールドを含む。
いくつかの実施形態では、第1のメニューは、(i)予め定義されたアクション又はサブアクションが、APIからテーブルのリストを動的に取得する、及び(ii)テーブルのリストからのテーブルの選択が、テーブルのリストが動的に取り込まれたドロップダウンメニューを介して行われるという指定を可能にする。
いくつかの実施形態では、第2のメニューは、(i)フィールドのリストがテーブルに関係する、及び(ii)フィールドのリストの少なくとも一部が、フィールド毎に1つのキー値ペアであるキー値ペアのセットとして、第5のメニュー内に表示されるという指定を可能にする。
X.結語
本開示は、本出願に記載された特定の実施形態の観点から限定されるものではなく、種々の態様の例示として意図されている。多くの変更及び変形は、当業者に明らかであるように、その範囲から逸脱することなく行うことができる。本明細書に説明されているものに加えて、開示の範囲内で機能的に等価な方法及び装置は、上記の説明から当業者には明らかであろう。そのような変更及び変形は、添付の特許請求の範囲内に含まれることを意図されている。
上記の詳細な説明は、添付の図面を参照して、開示されているシステム、装置、及び方法の種々の特徴及び動作について説明したものである。本明細書に説明された及び図面における例示的実施形態は、限定するように意図されていない。本明細書で示される主題の範囲から逸脱することなく、他の実施形態が使用されてよく、他の変更がなされてよい。本開示の態様は、本明細書に一般的に記載され図示されるように、様々な異なる形態で配置、置換、結合、分離、及び設計され得ることは容易に理解されるであろう。
図面における及び本明細書で説明されているメッセージフロー図、シナリオ、及びフローチャートのいずれか又は全てに関して、各ステップ、ブロック、及び/又は通信は、例示的実施形態に従って情報の処理及び/又は情報の送信を表すことができる。代替実施形態は、これらの例示的実施形態の範囲内に含まれる。これらの代替実施形態において、例えば、ステップ、ブロック、送信、通信、要求、応答、及び/又はメッセージとして説明される動作は、関連する機能に応じて、実質的に同時又は逆の順序を含めて、図示又は説明されるものと異なる順序で実行され得る。更に、本明細書で説明されたメッセージフロー図、シナリオ、及びフローチャートのいずれかと共に、より多い又はより少ないブロック及び/又は動作が使用されてよく、これらのメッセージフロー図、シナリオ、及びフローチャートは、部分的又は全体で相互に組み合わされ得る。
情報の処理を表すステップ又はブロックは、本明細書に記載の方法又は技術の特定の論理機能を実行するように構成できる回路に対応することができる。代替的又は追加的に、情報の処理を表すステップ又はブロックは、モジュール、セグメント、又はプログラムコードの一部(関連データを含む)に対応することができる。プログラムコードは、方法又は技術における特定の論理操作又はアクションを実装するためにプロセッサによって実行可能である1つ又は複数の命令を含むことができる。プログラムコード及び/又は関連データは、RAM、ディスクドライブ、ソリッドステートドライブ、又は他の記憶媒体を含む記憶装置など、任意のタイプのコンピュータ可読媒体に記憶され得る。
また、コンピュータ可読媒体には、レジスタメモリ及びプロセッサキャッシュのようにデータを短期間記憶するコンピュータ可読媒体のような、非一時的コンピュータ可読媒体も含まれ得る。コンピュータ可読媒体は更に、プログラムコード及び/又はデータをより長期間記憶する非一時的コンピュータ可読媒体が含まれ得る。したがって、コンピュータ可読媒体には、例えば、ROM、光又は磁気ディスク、ソリッドステートドライブ、コンパクトディスク読取り専用メモリ(CD-ROM)のような、二次又は永続的な長期記憶装置が含まれ得る。コンピュータ可読媒体はまた、他の任意の揮発性又は不揮発性の記憶システムとすることもできる。コンピュータ可読媒体は、例えば、コンピュータ可読記憶媒体又は有形記憶装置であるとみなされ得る。
更に、1つ又は複数の情報伝送を表すステップ又はブロックは、同じ物理装置内のソフトウェア及び/又はハードウェアモジュール間の情報伝送に対応することができる。しかしながら、他の情報伝送は、異なる物理装置におけるソフトウェアモジュール及び/又はハードウェアモジュール間にあり得る。
図面に示された特定の配置は、限定するものとみなされるべきではない。他の実施形態は、所与の図に示される各要素についてより多い又はより少ない要素を含み得ると理解されるべきである。更に、例示された要素のいくつかは、結合又は省略され得る。更に、例示的実施形態は、図面に示されていない要素を含むことができる。
様々な態様及び実施形態が本明細書に開示されているが、他の態様及び実施形態は当業者には明らかであろう。本明細書に開示された様々な態様及び実施形態は例示を目的としており、限定するものではなく、真の範囲は添付の特許請求の範囲によって示される。

Claims (20)

  1. リモートネットワーク管理プラットフォームの計算インスタンスであって、
    リモートサービスのアプリケーションプログラミングインターフェース(API)の定義を含む永続ストレージであって、前記APIは、前記リモートサービスに記憶された入力情報へのアクセスを提供し、前記リモートサービスは、前記計算インスタンスとは物理的に異なる、永続ストレージと、
    アクション設計グラフィカルユーザインターフェース(GUI)を介して、前記APIから動的入力を受け取るアクションの定義を得る動作を行うように構成された1つ又は複数のプロセッサと
    を含み、前記アクションは、ワークフローに統合されるように構成され、前記動作は、
    前記アクション設計GUIの第1のバージョン上に表示するために、前記ワークフローの設計中に前記APIから動的に取得されることになる前記入力情報の第1のセットの選択を可能にする第1のメニューを提供することと、
    前記入力情報の前記第1のセットの前記選択を受け取ることに応答して、前記アクション設計GUIの第2のバージョン上に表示するために、前記ワークフローの設計中に前記APIから動的に取得されることになる前記入力情報の第2のセットの選択を可能にする第2のメニューを提供することであって、前記入力情報の前記第2のセットは、前記入力情報の前記第1のセットの前記選択と関係付けられる、提供することと、
    前記入力情報の前記第2のセットの前記選択を受け取ることに応答して、前記アクション設計GUIの1つ又は複数の更なるバージョン上に表示するために、前記API、前記APIにリモートでアクセスする方法、及び前記APIから受け取ったデータを解析する方法を指定するためのオプションを提供することと、
    入力として前記入力情報の前記第1のセット及び前記入力情報の前記第2のセットを含む前記アクションの前記定義を前記永続ストレージに書き込むことと
    を含む、計算インスタンス。
  2. 前記ワークフローの設計中に前記APIから動的に取得されることになる前記入力情報の前記第1のセットは、前記リモートサービスによって提供されるテーブルのリストである、請求項1に記載の計算インスタンス。
  3. 前記アクション設計GUIの前記第1のバージョンは、前記ワークフローの設計中にテーブルの前記リストがどのように表示されることになるかに関するセレクタを更に含み、前記セレクタは、テーブルの前記リストのドロップダウンメニュー及びデフォルト値の指定を可能にする、請求項2に記載の計算インスタンス。
  4. 前記ワークフローの設計中に前記APIから動的に取得されることになる前記入力情報の前記第2のセットは、テーブルの前記リストからのテーブルにおけるフィールドのリストである、請求項2に記載の計算インスタンス。
  5. 前記動作は、
    ワークフロー設計GUIの第1のバージョン上に表示するために、前記ワークフローに組み込まれることが可能な予め定義されたアクションのリストからの前記アクションの選択を可能にする第3のメニューを提供することと、
    前記アクションの前記選択を受け取ることに応答して、前記APIを介して、テーブルの前記リストを動的に取得することと、
    前記アクションの前記定義に基づいて、前記ワークフロー設計GUIの第2のバージョン上に表示するために、テーブルの前記リストからの前記テーブルの選択を可能にする第4のメニューを提供することと、
    前記アクションの前記定義に基づいて、及びテーブルの前記リストからの前記テーブルの前記選択を受け取ることに応答して、前記APIを介して、前記テーブルにおけるフィールドの前記リストを動的に取得することと、
    前記アクションの前記定義に基づいて、前記ワークフロー設計GUIの第3のバージョン上に表示するために、フィールドの前記リストからのフィールドに対して手順が行われることを可能にする第5のメニューを提供することと、
    前記手順が行われた後に前記テーブルと前記フィールドの値とを含む前記ワークフローの定義を前記永続ストレージに書き込むことと
    を更に含む、請求項4に記載の計算インスタンス。
  6. 前記フィールドに対して行われる前記手順は、前記フィールドの前記値を指定又は変更することを含む、請求項5に記載の計算インスタンス。
  7. 前記ワークフロー設計GUIの前記第3のバージョンは、フィールドの前記リストからの前記フィールドの選択を可能にする、請求項5に記載の計算インスタンス。
  8. 前記ワークフロー設計GUIの前記第3のバージョンは、必要であると予め定義されているフィールドの前記リストからの1つ又は複数のフィールドを含む、請求項5に記載の計算インスタンス。
  9. 前記第1のメニューは、(i)予め定義されたサブアクションが、前記APIからテーブルの前記リストを動的に取得する、及び(ii)テーブルの前記リストからの前記テーブルの選択が、テーブルの前記リストが動的に取り込まれたドロップダウンメニューを介して行われるという指定を可能にする、請求項5に記載の計算インスタンス。
  10. 前記第2のメニューは、(i)フィールドの前記リストが前記テーブルに関係する、及び(ii)フィールドの前記リストの少なくとも一部が、フィールド毎に1つのキー値ペアであるキー値ペアのセットとして、前記第5のメニュー内に表示されるという指定を可能にする、請求項5に記載の計算インスタンス。
  11. サーバ装置によって、クライアント装置に対して、ワークフローに統合されるように構成されたアクションを定義するアクション設計グラフィカルユーザインターフェース(GUI)の第1のバージョン上に表示するために、リモートサービスのアプリケーションプログラミングインターフェース(API)から動的に取得されることになる入力情報の第1のセットの選択を可能にする第1のメニューを提供するステップであって、前記動的取得は、前記ワークフローの設計中に行われ、前記リモートサービスは、前記サーバ装置及び前記クライアント装置とは物理的に異なる、ステップと、
    前記入力情報の前記第1のセットの前記選択を受け取ることに応答して、前記サーバ装置によって、前記クライアント装置に対して、前記アクション設計GUIの第2のバージョン上に表示するために、前記ワークフローの設計中に前記APIから動的に取得されることになる前記入力情報の第2のセットの選択を可能にする第2のメニューを提供するステップであって、前記入力情報の前記第2のセットは、前記入力情報の前記第1のセットの前記選択と関係付けられる、ステップと、
    前記入力情報の前記第2のセットの前記選択を受け取ることに応答して、前記サーバ装置によって、前記クライアント装置に対して、前記アクション設計GUIの1つ又は複数の更なるバージョン上に表示するために、前記API、前記APIにリモートでアクセスする方法、及び前記APIから受け取ったデータを解析する方法を指定するためのオプションを提供するステップと、
    前記サーバ装置によって、永続ストレージに対して、入力として前記入力情報の前記第1のセット及び前記入力情報の前記第2のセットを含む前記アクションの定義を書き込むステップと
    を含む方法。
  12. 前記ワークフローの設計中に前記APIから動的に取得されることになる前記入力情報の前記第1のセットは、前記リモートサービスによって提供されるテーブルのリストである、請求項11に記載の方法。
  13. 前記アクション設計GUIの前記第1のバージョンは、前記ワークフローの設計中にテーブルの前記リストがどのように表示されることになるかに関するセレクタを更に含み、前記セレクタは、テーブルの前記リストのドロップダウンメニュー及びデフォルト値の指定を可能にする、請求項12に記載の方法。
  14. 前記ワークフローの設計中に前記APIから動的に取得されることになる前記入力情報の前記第2のセットは、テーブルの前記リストからのテーブルにおけるフィールドのリストである、請求項12に記載の方法。
  15. ワークフロー設計GUIの第1のバージョン上に表示するために、前記ワークフローに組み込まれることが可能な予め定義されたアクションのリストからの前記アクションの選択を可能にする第3のメニューを提供するステップと、
    前記アクションの前記選択を受け取ることに応答して、前記APIを介して、テーブルの前記リストを動的に取得するステップと、
    前記アクションの前記定義に基づいて、前記ワークフロー設計GUIの第2のバージョン上に表示するために、テーブルの前記リストからの前記テーブルの選択を可能にする第4のメニューを提供するステップと、
    前記アクションの前記定義に基づいて、及びテーブルの前記リストからの前記テーブルの前記選択を受け取ることに応答して、前記APIを介して、前記テーブルにおけるフィールドの前記リストを動的に取得するステップと、
    前記アクションの前記定義に基づいて、前記ワークフロー設計GUIの第3のバージョン上に表示するために、フィールドの前記リストからのフィールドに対して手順が行われることを可能にする第5のメニューを提供するステップと、
    前記手順が行われた後に前記テーブルと前記フィールドの値とを含む前記ワークフローの定義を前記永続ストレージに書き込むステップと
    を更に含む、請求項14に記載の方法。
  16. 前記フィールドに対して行われる前記手順は、前記フィールドの前記値を指定又は変更することを含む、請求項15に記載の方法。
  17. 前記ワークフロー設計GUIの前記第3のバージョンは、フィールドの前記リストからの前記フィールドの選択を可能にする、請求項15に記載の方法。
  18. 前記ワークフロー設計GUIの前記第3のバージョンは、必要であると予め定義されているフィールドの前記リストからの1つ又は複数のフィールドを含む、請求項15に記載の方法。
  19. プログラム命令を記憶した非一時的コンピュータ可読媒体を含む製造品であって、前記プログラム命令は、コンピューティングシステムによって実行されると、
    クライアント装置に対して、ワークフローに統合されるように構成されたアクションを定義するアクション設計グラフィカルユーザインターフェース(GUI)の第1のバージョン上に表示するために、リモートサービスのアプリケーションプログラミングインターフェース(API)から動的に取得されることになる入力情報の第1のセットの選択を可能にする第1のメニューを提供することであって、前記動的取得は、前記ワークフローの設計中に行われ、前記リモートサービスは、前記コンピューティングシステム及び前記クライアント装置とは物理的に異なる、提供することと、
    前記入力情報の前記第1のセットの前記選択を受け取ることに応答して、前記クライアント装置に対して、前記アクション設計GUIの第2のバージョン上に表示するために、前記ワークフローの設計中に前記APIから動的に取得されることになる前記入力情報の第2のセットの選択を可能にする第2のメニューを提供することであって、前記入力情報の前記第2のセットは、前記入力情報の前記第1のセットの前記選択と関係付けられる、提供することと、
    前記入力情報の前記第2のセットの前記選択を受け取ることに応答して、前記クライアント装置に対して、前記アクション設計GUIの1つ又は複数の更なるバージョン上に表示するために、前記API、前記APIにリモートでアクセスする方法、及び前記APIから受け取ったデータを解析する方法を指定するためのオプションを提供することと、
    永続ストレージに対して、入力として前記入力情報の前記第1のセット及び前記入力情報の前記第2のセットを含む前記アクションの定義を書き込むことと
    を含む動作を、前記コンピューティングシステムに行わせる、製造品。
  20. 前記動作は、
    ワークフロー設計GUIの第1のバージョン上に表示するために、前記ワークフローに組み込まれることが可能な予め定義されたアクションのリストからの前記アクションの選択を可能にする第3のメニューを提供することと、
    前記アクションの前記選択を受け取ることに応答して、前記APIを介して、テーブルのリストを動的に取得することと、
    前記アクションの前記定義に基づいて、前記ワークフロー設計GUIの第2のバージョン上に表示するために、テーブルの前記リストからのテーブルの選択を可能にする第4のメニューを提供することと、
    前記アクションの前記定義に基づいて、及びテーブルの前記リストからの前記テーブルの前記選択を受け取ることに応答して、前記APIを介して、前記テーブルにおけるフィールドのリストを動的に取得することと、
    前記アクションの前記定義に基づいて、前記ワークフロー設計GUIの第3のバージョン上に表示するために、フィールドの前記リストからのフィールドに対して手順が行われることを可能にする第5のメニューを提供することと、
    前記手順が行われた後に前記テーブルと前記フィールドの値とを含む前記ワークフローの定義を前記永続ストレージに書き込むことと
    を更に含む、請求項19に記載の製造品。
JP2021556538A 2019-03-19 2020-03-19 動的アクション入力のためのワークフローサポート Active JP7245356B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/358,148 2019-03-19
US16/358,148 US10452360B1 (en) 2019-03-19 2019-03-19 Workflow support for dynamic action input
PCT/US2020/023690 WO2020191223A1 (en) 2019-03-19 2020-03-19 Workflow support for dynamic action input

Publications (2)

Publication Number Publication Date
JP2022525481A true JP2022525481A (ja) 2022-05-16
JP7245356B2 JP7245356B2 (ja) 2023-03-23

Family

ID=68241962

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021556538A Active JP7245356B2 (ja) 2019-03-19 2020-03-19 動的アクション入力のためのワークフローサポート

Country Status (6)

Country Link
US (3) US10452360B1 (ja)
EP (1) EP3942491B1 (ja)
JP (1) JP7245356B2 (ja)
KR (1) KR102625122B1 (ja)
AU (2) AU2020242059A1 (ja)
WO (1) WO2020191223A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021161104A1 (en) 2020-02-12 2021-08-19 Monday.Com Enhanced display features in collaborative network systems, methods, and devices
US11410129B2 (en) 2010-05-01 2022-08-09 Monday.com Ltd. Digital processing systems and methods for two-way syncing with third party applications in collaborative work systems
WO2021220058A1 (en) 2020-05-01 2021-11-04 Monday.com Ltd. Digital processing systems and methods for enhanced collaborative workflow and networking systems, methods, and devices
US10956013B2 (en) * 2017-05-05 2021-03-23 Servicenow, Inc. User interface for automated flows within a cloud based developmental platform
US11436359B2 (en) 2018-07-04 2022-09-06 Monday.com Ltd. System and method for managing permissions of users for a single data type column-oriented data structure
US11698890B2 (en) 2018-07-04 2023-07-11 Monday.com Ltd. System and method for generating a column-oriented data structure repository for columns of single data types
US10452360B1 (en) * 2019-03-19 2019-10-22 Servicenow, Inc. Workflow support for dynamic action input
CN114730256A (zh) * 2019-11-11 2022-07-08 阿韦瓦软件有限责任公司 用于分布式低代码/无代码计算环境的计算机化的系统和方法
EP4062313A1 (en) 2019-11-18 2022-09-28 Monday.com Ltd. Collaborative networking systems, methods, and devices
US20210150135A1 (en) 2019-11-18 2021-05-20 Monday.Com Digital processing systems and methods for integrated graphs in cells of collaborative work system tables
US11829953B1 (en) 2020-05-01 2023-11-28 Monday.com Ltd. Digital processing systems and methods for managing sprints using linked electronic boards
US11277361B2 (en) 2020-05-03 2022-03-15 Monday.com Ltd. Digital processing systems and methods for variable hang-time for social layer messages in collaborative work systems
US11397847B1 (en) 2021-01-14 2022-07-26 Monday.com Ltd. Digital processing systems and methods for display pane scroll locking during collaborative document editing in collaborative work systems
US11444903B1 (en) * 2021-02-26 2022-09-13 Slack Technologies, Llc Contextual discovery and design of application workflow
US11620124B2 (en) * 2021-04-23 2023-04-04 Salesforce.Com, Inc. System and method for flow runtime versioning
KR102566983B1 (ko) * 2021-06-01 2023-08-14 성균관대학교산학협력단 스케줄러 기반의 워크플로우 프로세스 자동화 모델 장치
CN114553848B (zh) * 2021-12-31 2024-03-12 山东有人物联网股份有限公司 一种云编程系统、方法、设备及计算机存储介质
JP2023101281A (ja) * 2022-01-07 2023-07-20 富士フイルムビジネスイノベーション株式会社 情報処理装置及び情報処理プログラム
US11741071B1 (en) 2022-12-28 2023-08-29 Monday.com Ltd. Digital processing systems and methods for navigating and viewing displayed content
US11886683B1 (en) 2022-12-30 2024-01-30 Monday.com Ltd Digital processing systems and methods for presenting board graphics
US11893381B1 (en) 2023-02-21 2024-02-06 Monday.com Ltd Digital processing systems and methods for reducing file bundle sizes
US11922144B1 (en) * 2023-03-20 2024-03-05 OpenAI Opco, LLC Schema-based integration of external APIs with natural language applications

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060069596A1 (en) * 2004-09-29 2006-03-30 Microsoft Corporation Workflow hosting computing system using a collaborative application
JP2006107481A (ja) * 2004-10-01 2006-04-20 Microsoft Corp 設計時および実行時にワークフローを継ぎ目なくオーサリングし編集するためのフレームワーク
US20090293059A1 (en) * 2008-05-20 2009-11-26 Microsoft Corporation Automatically connecting items of workflow in a computer program
EP3454203A1 (en) * 2017-09-12 2019-03-13 Servicenow, Inc. Data modelling and flow engine for building automated flows within a cloud based developmental platform

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1010192A (en) 1911-09-18 1911-11-28 John F Shelton Flexible wire mat.
US5999911A (en) * 1995-06-02 1999-12-07 Mentor Graphics Corporation Method and system for managing workflow
EP1410281A2 (en) 2000-07-10 2004-04-21 BMC Software, Inc. System and method of enterprise systems and business impact management
US6609122B1 (en) 2000-08-01 2003-08-19 Bmc Software, Inc. Navigation of view relationships in database system
US7028301B2 (en) 2000-12-08 2006-04-11 Bmc Software, Inc. System and method for automatic workload characterization
US7170864B2 (en) 2001-03-08 2007-01-30 Bmc Software, Inc. System and method for WAP server management using a single console
US7506047B2 (en) 2001-03-30 2009-03-17 Bmc Software, Inc. Synthetic transaction monitor with replay capability
US7100147B2 (en) * 2001-06-28 2006-08-29 International Business Machines Corporation Method, system, and program for generating a workflow
US7350209B2 (en) 2001-06-29 2008-03-25 Bmc Software System and method for application performance management
US7089245B1 (en) 2001-08-31 2006-08-08 Bmc Software, Inc. Service desk data transfer interface
US7617073B2 (en) 2002-03-01 2009-11-10 Bmc Software, Inc. System and method for assessing and indicating the health of components
US7131037B1 (en) 2002-06-05 2006-10-31 Proactivenet, Inc. Method and system to correlate a specific alarm to one or more events to identify a possible cause of the alarm
US20040148213A1 (en) * 2002-11-25 2004-07-29 Microsoft Corporation Automated workflow constraints
US7062537B2 (en) * 2002-11-25 2006-06-13 Microsoft Corporation Workflow services architecture
US20040148299A1 (en) * 2002-11-25 2004-07-29 Microsoft Corporation Automated workflow composable action model
US7062683B2 (en) 2003-04-22 2006-06-13 Bmc Software, Inc. Two-phase root cause analysis
US7945860B2 (en) 2003-05-14 2011-05-17 Hewlett-Packard Development Company, L.P. Systems and methods for managing conversations between information technology resources
US7882213B2 (en) 2003-06-03 2011-02-01 Bmc Software, Inc. Network management system to monitor managed elements
US7689628B2 (en) 2005-05-19 2010-03-30 Atul Garg Monitoring several distributed resource elements as a resource pool
US8224683B2 (en) 2003-07-08 2012-07-17 Hewlett-Packard Development Company, L.P. Information technology service request level of service monitor
CA2451164C (en) * 2003-09-11 2016-08-30 Teamplate Inc. Customizable components
EP1834294A2 (en) 2004-12-21 2007-09-19 BMC Software, Inc. System and method for business service management and building business service model
US7610512B2 (en) 2006-01-06 2009-10-27 Hewlett-Packard Development Company, L.P. System and method for automated and assisted resolution of it incidents
US8887133B2 (en) 2006-04-28 2014-11-11 Bmc Software, Inc. Bi-directional communication between change management tool and implementation tools
US8051162B2 (en) 2006-07-28 2011-11-01 Hewlett-Packard Development Company, L.P. Data assurance in server consolidation
US8266096B2 (en) 2008-10-24 2012-09-11 Bmc Software, Inc. Vendor portfolio management in support of vendor relationship management analysis, planning and evaluation
US8743121B2 (en) 2009-12-23 2014-06-03 Bmc Software, Inc. Smart impact views
US8478569B2 (en) 2010-03-26 2013-07-02 Bmc Software, Inc. Auto adjustment of baseline on configuration change
US8457928B2 (en) 2010-03-26 2013-06-04 Bmc Software, Inc. Automatic determination of dynamic threshold for accurate detection of abnormalities
US8674992B2 (en) 2010-06-24 2014-03-18 Bmc Software, Inc. Spotlight graphs
US8689241B2 (en) 2011-09-30 2014-04-01 Bmc Software, Inc. Dynamic evocations for computer event management
US20140236663A1 (en) * 2012-11-13 2014-08-21 Terry Smith System and method for providing unified workflows integrating multiple computer network resources
US9977654B2 (en) * 2014-06-20 2018-05-22 Asset, S.r.L. Method of developing an application for execution in a workflow management system and apparatus to assist with generation of an application for execution in a workflow management system
US9535737B2 (en) 2015-01-30 2017-01-03 Bladelogic, Inc. Dynamic virtual port provisioning
US10528327B2 (en) * 2015-11-23 2020-01-07 Microsoft Technology Licensing Llc Workflow development system with ease-of-use features
US10423393B2 (en) * 2016-04-28 2019-09-24 Microsoft Technology Licensing, Llc Intelligent flow designer
WO2017197319A1 (en) * 2016-05-13 2017-11-16 Servicenow, Inc. Visual workflow model
US10025567B2 (en) * 2016-10-14 2018-07-17 Microsoft Technology Licensing, Llc Bot creation with workflow development system
US10534337B2 (en) 2017-05-04 2020-01-14 Servicenow, Inc. Flow engine for building automated flows within a cloud based developmental platform
US20180322599A1 (en) * 2017-05-04 2018-11-08 Servicenow, Inc. Automated software license reclamation
US20180324051A1 (en) * 2017-05-05 2018-11-08 Servicenow, Inc. User interface for automated flows within a cloud based developmental platform
US10956013B2 (en) * 2017-05-05 2021-03-23 Servicenow, Inc. User interface for automated flows within a cloud based developmental platform
US10101972B1 (en) * 2017-09-12 2018-10-16 Servicenow, Inc. Data modelling and flow engine for building automated flows within a cloud based developmental platform
US10225160B1 (en) * 2018-02-27 2019-03-05 Servicenow, Inc. Defining and enforcing operational associations between configuration item classes in managed networks
US10452360B1 (en) * 2019-03-19 2019-10-22 Servicenow, Inc. Workflow support for dynamic action input

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060069596A1 (en) * 2004-09-29 2006-03-30 Microsoft Corporation Workflow hosting computing system using a collaborative application
JP2006107481A (ja) * 2004-10-01 2006-04-20 Microsoft Corp 設計時および実行時にワークフローを継ぎ目なくオーサリングし編集するためのフレームワーク
US20090293059A1 (en) * 2008-05-20 2009-11-26 Microsoft Corporation Automatically connecting items of workflow in a computer program
EP3454203A1 (en) * 2017-09-12 2019-03-13 Servicenow, Inc. Data modelling and flow engine for building automated flows within a cloud based developmental platform

Also Published As

Publication number Publication date
AU2023229528A1 (en) 2023-09-28
AU2020242059A1 (en) 2021-10-14
EP3942491A1 (en) 2022-01-26
US11256482B2 (en) 2022-02-22
US20210042094A1 (en) 2021-02-11
KR20210143235A (ko) 2021-11-26
US20200301677A1 (en) 2020-09-24
US10452360B1 (en) 2019-10-22
KR102625122B1 (ko) 2024-01-12
WO2020191223A1 (en) 2020-09-24
EP3942491B1 (en) 2024-01-17
JP7245356B2 (ja) 2023-03-23
US10809982B2 (en) 2020-10-20

Similar Documents

Publication Publication Date Title
JP7245356B2 (ja) 動的アクション入力のためのワークフローサポート
US11435983B2 (en) Workflow support for dynamic action output
US11068241B2 (en) Guided definition of an application programming interface action for a workflow
US11258865B2 (en) Automated integration with cloud-based services
US11100075B2 (en) Graphical user interfaces for incorporating complex data objects into a workflow
AU2020287352B2 (en) Integration of remote software applications into a workflow
US10949074B2 (en) Graphical user interfaces for defining complex data objects
US11599236B2 (en) Adaptable user interface layout for applications
US10693745B2 (en) Defining and enforcing operational associations between configuration item classes in managed networks
US11880557B2 (en) Distributed editing and versioning for graphical service maps of a managed network
US11252047B2 (en) Automatic determination of code customizations
US20210075704A1 (en) Automated document summaries using highlighting
US11449535B2 (en) Generating conversational interfaces based on metadata
US11748115B2 (en) Application and related object schematic viewer for software application change tracking and management
US20230004409A1 (en) User Interface with Configurable Specification of Related Data Sources
US20230148129A1 (en) Improved localization procedures and prioritization for applications

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211110

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230208

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230310

R150 Certificate of patent or registration of utility model

Ref document number: 7245356

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150