例示的な方法、デバイス、及びシステムが本明細書に説明される。本明細書では、単語“例”及び“例示的”は、“例、実例、又は例証として役立つ”ことを意味するために使用されることを理解すべきである。“例”又は“例示的”であるとして本明細書に説明される任意の実施形態又は機構は、そのように述べられない限り、必ずしも他の実施形態又は機構よりも好ましい又は有利であると解釈されるべきではない。したがって、本明細書に提示される主題の範囲から逸脱することなく、他の実施形態が利用され得、他の変更がなされ得る。
したがって、本明細書に説明する例示的実施形態は、限定することを意図しない。本明細書に一般的に説明され、図に説明されるような本開示の態様が、多種多様な異なる構成で配置され得、置換され得、組み合わされ得、分離され得、及び設計され得ることは容易に理解されるであろう。例えば、“クライアント”コンポーネントと“サーバ”コンポーネントとへの機構の分離は、様々な方法で生じ得る。
更に、文脈が他のことを示唆しない限り、図の各々に示される機構は、相互に組み合わせて使用され得る。したがって、図は、一般的に、各実施形態に対して全ての説明された機構が必要であるとは限らないことを理解すると共に、1つ以上の全体的な実施形態のコンポーネントの態様としてみなされるべきである。
また、この明細書又は特許請求の範囲における要素、ブロック、又はステップの任意の列挙は、明確にする目的のためのものである。したがって、そうした列挙は、これらの要素、ブロック、又はステップが特定の配置に準拠すること、又は特定の順序で実行されることを必要とする又は暗示するものとして解釈されるべきではない。
I. はじめに
大企業は、多くの相互に関連する動作を伴う複雑なエンティティである。これらの幾つかは、人材(HR)、サプライチェーン、情報技術(IT)、財務等、企業全体で見られる。しかしながら、各企業はまた、本質的な能力を提供し、及び/又は競争上の優位性を創出する独自の動作を有する。
広く実装された動作をサポートするために、企業は通常、顧客関係管理(CRM)及び人的資本管理(HCM)パッケージ等の既製のソフトウェアアプリケーションを使用する。しかしながら、それらの独自の要件を満たすためにカスタムソフトウェアアプリケーションを必要とすることもあり得る。大企業は、数十又は数百のこれらのカスタムソフトウェアアプリケーションをしばしば有する。それにもかかわらず、本明細書の実施形態によって提供される利点は、大企業に限定されず、任意の規模の企業又は任意の他のタイプの組織に適用可能であり得る。
多くのそうしたソフトウェアアプリケーションは、企業内の個々の部門によって開発される。これらは、単純なスプレッドシートからカスタムビルドのソフトウェアツール及びデータベースにまで及ぶ。しかしながら、サイロ化されたカスタムソフトウェアアプリケーションの急増は、多くの欠点を有する。そのことは、その動作を運営及び拡大し、革新し、規制要件を満たす企業の能力に悪影響を及ぼす。企業は、そのサブシステムとデータとを統合する単一のシステムを欠くことに起因して、その動作を統合、合理化、及び強化することが難しいと感じることがある。
カスタムアプリケーションを効率的に作成するために、企業は、不必要な開発の複雑さを排除する、リモートでホストされたアプリケーションプラットフォームからの利益を得るであろう。そうしたプラットフォームの目標は、ソフトウェアエンジニア及び他の役割の個人が独自の高価値の機構の開発に集中できるように、時間のかかる反復的なアプリケーション開発タスクを削減することであろう。
この目標を達成するために、企業全体のワークフローをインテリジェントに自動化するように、サービスとしてのアプリケーションプラットフォーム(aSaaS)の概念が導入される。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は更に、IEEE 802.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の様々なコンピューティングタスクを実施するように構成され得る。したがって、コンピューティングタスクは、サーバデバイス202の内の1つ以上の間で分散され得る。これらのコンピューティングタスクが並行して実施され得る範囲で、タスクのこうした分散は、これらのタスクを完了して結果を返すための合計時間を削減し得る。簡単にする目的のために、サーバクラスタ200及び個々のサーバデバイス202の両方は、“サーバデバイス”と称され得る。この命名法は、1つ以上の別個のサーバデバイス、データストレージデバイス、及びクラスタルータがサーバデバイスの動作に関与し得ることを意味すると理解すべきである。
データストレージ204は、ハードディスクドライブ及び/又はソリッドステートドライブのグループへの読み出し及び書き込みアクセスを管理するように構成されたドライブアレイコントローラを含むデータストレージアレイであり得る。ドライブアレイコントローラはまた、単独で、又はサーバデバイス202と組み合わせて、サーバデバイス202の内の1つ以上がデータストレージ204のユニットにアクセスすることを妨げるドライブの障害又は他のタイプの障害から保護するように、データストレージ204内に格納されたデータのバックアップ又は冗長コピーを管理するように構成され得る。ドライブ以外の他のタイプのメモリが使用されてもよい。
ルータ206は、サーバクラスタ200に内部及び外部の通信を提供するように構成されたネットワーク機器を含み得る。例えば、ルータ206は、(i)ローカルクラスタネットワーク208を介したサーバデバイス202とデータストレージ204との間のネットワーク通信、及び/又は(ii)ネットワーク212への通信リンク210を介したサーバクラスタ200と他のデバイスとの間のネットワーク通信を提供するように構成された1つ以上のパケットスイッチング及び/又はルーティングデバイス(スイッチ及び/又はゲートウェイを含む)を含み得る。
また、ルータ206の構成は、サーバデバイス202及びデータストレージ204のデータ通信要件、ローカルクラスタネットワーク208のレイテンシ及びスループット、通信リンク210のレイテンシ、スループット、及びコスト、並びに/又はシステムアーキテクチャのコスト、速度、フォールトトレランス、復元性、効率、及び/若しくはその他の設計目標に寄与し得るその他の要因に少なくとも部分的に基づき得る。
可能な例として、データストレージ204は、ストラクチャードクエリ言語(SQL)データベース等の任意の形式のデータベースを含み得る。テーブル、アレイ、リスト、ツリー、及びタプル等を含むがこれらに限定されない様々なタイプのデータ構造がこうしたデータベース内に情報を格納し得る。更に、データストレージ204内の任意のデータベースは、モノリシックであり得、又は複数の物理デバイスに分散され得る。
サーバデバイス202は、データストレージ204へデータを送信し、データストレージ204からデータを受信するように構成され得る。この送信及び検索は、SQLクエリ又は他のタイプのデータベースクエリ、及びそうしたクエリの出力の形式を夫々取り得る。追加のテキスト、画像、ビデオ、及び/又は音声も含まれ得る。更に、サーバデバイス202は、受信したデータをウェブページ表現に編成し得る。こうした表現は、ハイパーテキストマークアップ言語(HTML)、拡張可能マークアップ言語(XML)、又はその他の何らかの標準化された又は独自のフォーマット等のマークアップ言語の形式を取り得る。更に、サーバデバイス202は、Perl、Python、PHPハイパーテキストプリプロセッサ(PHP)、アクティブサーバページ(ASP)、及びJAVASCRIPT(登録商標)等であるがこれらに限定されない、様々なタイプのコンピュータ化されたスクリプト言語を実行する能力を有し得る。これらの言語で書き込まれたコンピュータプログラムコードは、クライアントデバイスへのウェブページの提供、及びウェブページとのクライアントデバイスの相互作用を容易にし得る。
III. リモートネットワーク管理アーキテクチャの例
図3は、例示的実施形態に従ったリモートネットワーク管理アーキテクチャを描写する。このアーキテクチャは、3つの主要なコンポーネント、管理されるネットワーク300と、リモートネットワーク管理プラットフォーム320と、サードパーティネットワーク340とを含み、全てはインターネット350を介して接続される。
管理されるネットワーク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等のファイアウォールは、そうしたセッションがファイアウォールの背後から(すなわち、管理されるネットワーク300上のデバイスから)最終的に開始されない限り、又はファイアウォールがセッションをサポートするように明示的に構成されていない限り、通常、インターネット350を介して着信する全ての通信セッションを拒否する。プロキシサーバ312を(例えば、管理されるネットワーク300内に、ファイアウォール310によって保護される)ファイアウォール310の背後に配置することによって、プロキシサーバ312は、ファイアウォール310を通じてこれらの通信セッションを開始することが可能であり得る。したがって、ファイアウォール310は、リモートネットワーク管理プラットフォーム320からの着信セッションをサポートするように特別に構成される必要がなくてもよく、それによって、管理されるネットワーク300に対する潜在的なセキュリティリスクを回避する。
幾つかの場合、管理されるネットワーク300は、僅かなデバイスと少数のネットワークとからなり得る。他の配備では、管理されるネットワーク300は、複数の物理的な位置に及び得、数百のネットワークと数十万のデバイスとを含み得る。したがって、図3に描写されたアーキテクチャは、桁違いにスケールアップ又はスケールダウンすることが可能である。
更に、管理されるネットワーク300のサイズ、アーキテクチャ、及び接続に依存して、様々な数のプロキシサーバ312がその中に配備され得る。例えば、プロキシサーバ312の各々1つは、管理されるネットワーク300の一部に関してリモートネットワーク管理プラットフォーム320と通信することに責任に負い得る。代替的に又は追加的に、2つ以上のプロキシサーバのセットは、負荷分散、冗長性、及び/又は高可用性の目的で、管理されるネットワーク300のそうした部分に割り当てられ得る。
リモートネットワーク管理プラットフォーム320は、ユーザ、特に管理されるネットワーク300のオペレータにaPaaSサービスを提供するホストされた環境である。これらのサービスは、実例として、ウェブベースのポータルの形式を取り得る。したがって、ユーザは、実例として、クライアントデバイス302から、又は潜在的に、管理されるネットワーク300の外部のクライアントデバイスから、リモートネットワーク管理プラットフォーム320に安全にアクセスし得る。ウェブベースのポータルを介して、ユーザは、アプリケーションを設計、テスト、及び展開し得、レポートを生成し得、分析を表示し得、その他のタスクを実施し得る。
図3に示されるように、リモートネットワーク管理プラットフォーム320は、4つの計算インスタンス322、324、326、及び328を含む。これらのインスタンスの各々は、特定の顧客が利用可能なウェブポータル、サービス、及びアプリケーションのセット(例えば、完全に機能するaPaaSシステム)を提供する1つ以上のサーバデバイス及び/又は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は、仮想マシンとその中の管理されるサービスとを管理されるネットワーク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はパッシブである。したがって、データセンタ400Aは、管理されるネットワーク300との間の全てのトラフィックに仕えているが、データセンタ400B内の計算インスタンス322のバージョンは、凡そリアルータイムで更新されている。両方のデータセンタがアクティブな構成等、他の構成がサポートされ得る。
データセンタ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つ以上のデバイス上で実行する複数のアプリケーションによって提供される高レベルの能力を指し得る。例えば、高レベルのウェブサービスは、あるデバイス上で実行する複数のウェブアプリケーションサーバスレッドと、別のデバイスで実行するデータベースアプリケーションからのアクセス情報とを含み得る。
図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は、特定のデバイスへのセキュアシェル(SHS)接続を開始して、ファイルシステム内の特定の位置からその上のオペレーティングシステムについての情報を取得するように命令され得る。この情報に基づいて、オペレーティングシステムが判定され得る。例として、TCPポート22がオープンであるUNIX(登録商標)デバイスは、AIX(登録商標)、HPUX、LINUX(登録商標)、MACOS(登録商標)、又はSOLARIS(登録商標)として分類され得る。この分類情報は、1つ以上の構成アイテムとしてCMDB500内に格納され得る。
識別フェーズにおいて、プロキシサーバ312は、分類されたデバイスについての具体的詳細を判定し得る。このフェーズの間に使用されるプローブは、分類フェーズの間に特定のデバイスについて収集された情報に基づき得る。例えば、デバイスがLINUX(登録商標)として分類された場合、LINUX(登録商標)固有のプローブのセットが使用され得る。同様に、デバイスがWINDOWS(登録商標)2012として分類された場合、WINDOWS(登録商標)2012固有のプローブのセットとして使用され得る。分類フェーズの場合と同様に、プロキシサーバ312が実行するために、タスクの適切なセットがタスクリスト502内に配置され得る。これらのタスクは、ベーシック入力/出力システム(BIOS)情報、シリアル番号、ネットワークインターフェース情報、これらのネットワークインターフェースに割り当てられたメディアアクセス制御アドレス、及び特定のデバイスにより使用されるIPアドレス等の情報を特定のデバイスからプロキシサーバ312が読み出すことをもたらし得る。この識別情報は、1つ以上の構成アイテムとしてCMDB500内に格納され得る。
探索フェーズにおいて、プロキシサーバ312は、分類されたデバイスの動作状態についての更なる詳細を判定し得る。このフェーズの間に使用されるプローブは、分類フェーズ及び/又は識別フェーズの間に特定のデバイスについて収集された情報に基づき得る。この場合も、プロキシサーバ312が実行するために、タスクの適切なセットがタスクリスト502内に配置され得る。これらのタスクは、プロセッサ情報、メモリ情報、及び実行中のプロセス(アプリケーション)のリスト等の追加情報を特定のデバイスからプロキシサーバ312が読み出すことをもたらし得る。再度、発見された情報は、1つ以上の構成アイテムとしてCMDB500内に格納され得る。
ルータ等のネットワークデバイス上で発見を実行することは、SNMPを利用し得る。実行中のプロセス又はその他のアプリケーション関連情報のリストを判定することの代わりに、又はそのことに加えて、発見は、ルータに認識されている追加のサブネットと、ルータのネットワークインターフェースの動作状態(例えば、アクティブ、非アクティブ、キューの長さ、ドロップしたパケット数等)とを判定し得る。追加のサブネットのIPアドレスは、更なる発見手順に対する候補であり得る。したがって、発見は、反復的又は再帰的に進行し得る。
発見が一旦完了すると、発見された各デバイス、アプリケーション、及びサービスのスナップショット表現がCMDB500内で利用可能である。例えば、発見後、管理されるネットワーク300内のクライアントデバイス、サーバデバイス、及びルータに対するオペレーティングシステムのバージョン、ハードウェア構成、及びネットワーク構成の詳細、並びにそれらの上で実行するアプリケーションが格納され得る。この収集された情報は、デバイスのハードウェア構成及び動作ステータス、並びに複数のデバイスとアプリケーションとに及ぶサービスの特徴をユーザが見ることを可能にするように、様々な方法でユーザに提示され得る。
更に、CMDB500は、構成アイテム間の依存性及び関係に関するエントリを含み得る。より具体的には、特定のサーバデバイス上で実行しているアプリケーション、及びこのアプリケーションに依存するサービスは、CMDB500内でそのように表され得る。実例として、データベースアプリケーションがサーバデバイス上で実行していると仮定し、並びにこのデータベースアプリケーションが新入社員オンボーディングサービス及び給与サービスにより使用されると仮定する。したがって、サーバデバイスがメンテナンスのために動作を停止した場合、社員オンボーディングサービス及び給与サービスが影響を受けるであろうことは明らかである。同様に、構成アイテム間の依存性及び関係は、特定のルータが故障した場合に影響を受けるサービスを表すことが可能であり得る。
一般的に、構成アイテム間の依存性及び関係は、ウェブベースのインターフェース上に表示され得、階層的方法で表され得る。したがって、こうした依存性及び関係の追加、変更、又は削除は、このインターフェースを介して達成され得る。
更に、管理されるネットワーク300からのユーザは、ある一定の調整された活動が複数の発見されたデバイスに渡って行われることを可能にするワークフローを開発し得る。実例として、ITワークフローは、単一の動作で、全ての発見されたLINUX(登録商標)デバイスに共通の管理者パスワードをユーザが変更することを可能にし得る。
上で説明した方法で発見が行われるために、プロキシサーバ312、CMDB500、及び/又は1つ以上のクレデンシャルストアは、発見されるデバイスの内の1つ以上に対するクレデンシャルで構成され得る。クレデンシャルは、デバイスにアクセスするために必要な任意のタイプの情報を含み得る。これらは、ユーザID/パスワードの対及び資格証明書等を含み得る。幾つかの実施形態では、これらのクレデンシャルは、CMDB500の暗号化されたフィールド内に格納され得る。プロキシサーバ312は、発見されているデバイスにログオンするため、さもなければアクセスするためにこれらのクレデンシャルをプロキシサーバ312が使用し得るように、クレデンシャルに対する復号化キーを含み得る。
発見プロセスは、図5Bにフローチャートとして描写されている。ブロック520において、計算インスタンス内のタスクリストは、実例として、IPアドレスの範囲でポピュレートされる。ブロック522において、スキャンフェーズが行われる。したがって、プロキシサーバは、これらのIPアドレスを使用してデバイスに対するIPアドレスを精査し、これらのデバイス上で実行しているオペレーティングシステムの判定を試みる。ブロック524において、分類フェーズが行われる。プロキシサーバは、発見されたデバイスのオペレーティングシステムのバージョンの判定を試みる。ブロック526において、識別フェーズが行われる。プロキシサーバは、発見されたデバイスのハードウェア及び/又はソフトウェア構成の判定を試みる。ブロック528において、探索フェーズが行われる。プロキシサーバは、発見されたデバイス上で実行している動作状態及びアプリケーションの判定を試みる。ブロック530において、発見されたデバイス及びアプリケーションを表す構成アイテムの更なる編集が行われ得る。この編集は、本質的に自動化され得、及び/又は手動で行われ得る。
図5Bに表したブロックは、例示を目的とする。発見は、より多くの又はより少ないフェーズを有し得る高度に構成可能な手順であり得、各フェーズの動作は変更し得る。幾つかの場合、1つ以上のフェーズがカスタマイズされ得、さもなければ上記の例示的な説明から逸脱し得る。
V. ワークフローデザインツールの例
本明細書で論じられるリモートネットワーク管理プラットフォームの計算インスタンスは、それらの管理されるネットワークに代わってワークフローの仕様及び実行を可能にし得る。ワークフローは、実施される場合に1つ以上の目標を達成する特定のシーケンス又は一連のタスクである。幾つかの場合、ワークフローはフローチャートとして表され得、1つ以上の開始状態、中間状態、及び終了状態がそれらの間の様々な遷移によって接続される。幾つかの状態は、0回又は複数回滞在され得る。また、幾つかの状態は、1つよりも多い可能性のある次の状態を有し得、したがって、ユーザ入力、自動入力、データベース内に格納された情報に基づいて、又はその他のメカニズムを介して、ワークフローでなされる決定を表す。状態間の幾つかの遷移、入力の取得、又は出力の生成を引き起こすトリガーも定義され得る。
こうしたワークフローは、ソフトウェアベースのワークフロー設計ツールの使用を通じて計算インスタンス上に実装され得る。こうしたツールは、ワークフロー設計者に、ワークフローの状態、遷移、トリガー、アクション、入力データ、出力データ、及びその他の特徴を定義するためのオプションを提供する。ツールは、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では、これらのプロパティは、ワークフローの名前“オフボーディング”、ワークフローのスコープアプリケーション“ユーザ管理”、ワークフローの説明“会社を辞めたユーザをオフボーディング”、及びワークフローが保護されるべきか否かである。代替的な実施形態では、より多くの又はより少ないプロパティが指定され得る。
ワークフローの名前は、ユーザにより入力される自由形式のテキストであり得る。ワークフローのスコープアプリケーションは、アプリケーションのドロップダウンメニューから選択され得、又はグローバルとして指定され得る。GUI600内のワークフローは“ユーザ管理”スコープアプリケーションに限定されているため、このワークフローはこのアプリケーションの一部とみなされ得る。ワークフローの説明もまた、自由形式のテキストであり得る。ワークフローの保護は、それが他のワークフロー設計者又はユーザによる変更可能(“なし”)であるか、それとも読み出し専用(“読み出し専用”)であるかを指定する。
ユーザがウィンドウ606内に入力された情報に一旦満足すると、ユーザは、“実行”ボタンを選択するか、さもなければ活性化し得る。この選択は、図6Aでは、このボタンが破線で描写されることにより示されている。ユーザがウィンドウ606のダイアログを一旦完了すると、ユーザがトリガーを指定することを可能にするワークフロー設計ツールの次のフェーズが表示され得る。
図6Bは、GUI608内のトリガー指定フェーズの第1の部分を描写する。GUI608の上部は、ウィンドウ606内に入力されたように、ワークフローの名前“オフボーディング”を指定する。GUI608のこのセクションは、このワークフローが現在ドラフト形式であり、“ユーザ管理”スコープアプリケーションの一部であることも指し示している。GUI608は更に、ユーザがワークフローを夫々編集、テスト、コピー、保存、及び活性化することを可能にする一連のボタンを表示する。代替的実施形態では、ワークフローについての異なるタイプの情報が表示され得、潜在的に異なる機能を有するより多くの又はより少ないボタンがあり得る。
特に、読みやすくする目的のために、GUI608(及び全ての更なるGUI)の背景からハッシュマークが省略されている。また、単語“Trigger”は、トリガーが指定されていることを指し示すために通常の暗い色で表示され、単語“Action”は、アクション指定が行われていないことを指し示すために、より明るい色で示されている。
ポップアップウィンドウ610(ウィンドウ606と同様に、GUI608の上にオーバーレイされたペインであり得、別個のウィンドウではなくてもよい)は、ユーザがワークフローに対するトリガーを指定することを可能にし得る。前述のように、2つの主要なタイプのトリガーがサポートされ得、これらのタイプはメニュー612内に示される。レコードベースのトリガーは、1つ以上の特定のデータベースレコードへの変更が発生した場合にワークフローを実施させ得る。メニュー612内に描写されているように、これらの変更は、レコードの作成、レコードの更新、レコードの作成又は更新、及びレコードの削除を含み得る。スケジュールされたトリガーは、ワークフローを1つ以上の指定された時間に実施させ得る。メニュー612に描写されるように、そうしたスケジュールは、ワークフローを毎日、毎週、毎月、(指定された時間に)一回だけ、又はユーザ指定の間隔で繰り返すように発動し得る。
図6Bにおいて、メニュー612は、レコードが更新された場合のトリガーをユーザが選択したことを破線で指し示している。このことは、選択されたトリガーの挙動を説明する情報ボックス614を表示させ得る。
図6Cは、GUI616内のトリガー指定フェーズの第2の部分を描写する。GUI616は、図6Bに示されている選択が完了していることを前提とする。したがって、GUI616は、ポップアップウィンドウ618(ウィンドウ606と同様に、GUI616の上にオーバーレイされたペインであり得、別個のウィンドウではなくてもよい)を描写し、それは、ユーザがワークフローに対するトリガーを更に指定することを可能にし得る。
ウィンドウ618は、幾つかのドロップダウンメニューを含み、その内の幾つかは、GUI608からのユーザの選択に基づいて自動的にポピュレートされ得る。特に、トリガーメニュー620は、ユーザの“更新”オプションの選択を反映するためにポピュレートされ得、実行トリガーメニュー630は、レコードベースのトリガーが1回だけ実行されることが期待されることを反映するためにポピュレートされ得る。それにもかかわらず、ユーザは、ウィンドウ618内のこれらの選択を修正し得る。
テーブルメニュー622は、レコードを見つけ得るデータベーステーブルをユーザが指定することを可能にする。示されているように、このテーブルはsys_userであり、会社の従業員毎に1つのエントリが含まれていると想定されている。テーブルメニュー622は、1つ以上の利用可能なテーブルのリストを表示することが可能であり得る。
条件メニュー624、626、及び628は、ワークフローが実施させられるであろう、選択されたテーブル内のレコードの条件をユーザが指定することを可能にする。この条件は、状態又は遷移であり得る。実例として、条件メニュー624は、レコードがアクティブでなければならないことを示すために“アクティブ”を指定し、条件メニュー626は、アクティブから変化するレコードを示すために“から変更”を指定し、条件メニュー628は、アクティブから別の状態へ変化する任意のレコードを指し示すために“真”を指定する。
様々な実施形態において、条件メニュー624は、sys_userテーブル内の様々なフィールドに対するエントリを含み得る。これらのフィールドは、電話番号、建物、都市、部門、住所、マネージャー、及び役割等を含み得る。条件メニュー626は、“である”、“ではない”、“空である”、“空ではない”、“何でもよい”、“と同じである”、“とは異なる”、“変更する”、”から変更する”、“に変更する”、及び/又はその他の様々な論理演算に対するエントリを含み得る。条件メニュー628は、条件メニュー624及び626に対してなされた選択に文脈的に基づくアイテムに対するエントリを含み得る。
全体として見ると、ウィンドウ618のトリガー指定は、sys_userテーブル内の何れかのエントリがアクティブから別の状態(例えば、非アクティブ)に更新された場合にワークフローが1回実施されることを指し示す。このことは、ユーザが会社のアクティブな従業員ではなくなったことを指し示す。
図6Dは、GUI632内のアクション指定の第1の部分を描写する。特に、634では、単語“Triger”には、図6B及び図6Cで指定されたトリガーの説明が付随する。更に、このテキストは、トリガーが指定されなくなったことを指し示すために灰色で表示される。
メニュー636に示されているように、ユーザは、アクション又はフローロジックを指定するオプションを有する。“アクション”ボタンの周りの破線は、アクションが指定されていることを指し示す。特に、メニュー636は、指定されているアクションに対する幾つかのコンテキストを表示する。例えば、“コア”アクションはデフォルトとして計算インスタンスによってサポートされる一方で、“グローバル”アクションは、全てのコアアクション、アプリケーションベースのアクション、及び統合ベースのアクションを含む。アプリケーションベースのアクション“App1”、“App2”、及び“App3”は、リモートネットワーク管理プラットフォーム上に構築された個別のアプリケーションによってサポートされるアクションである。これらは、例えば、様々なタイプのITサービス管理、IT動作管理、顧客サービス管理、セキュリティ動作、及びCRMアプリケーションを含み得る。統合ベースのアクションは、リモートネットワーク管理プラットフォームと統合されたサードパーティアプリケーションによって定義又はサポートされるアクションを含む。これらは、例えば、仮想チャットアプリケーション及びメッセージングアプリケーション等を含み得る。これらの組み込み又はサードパーティアプリケーションの各々は、ワークフロー設計ツールがこれらのアプリケーションのデータ及び/又は機能を含むワークフローをサポートし得るように、ワークフロー設計ツールへのインターフェース(“スポーク”と称される)を明示的に公開し得る。
図6Dでは、ユーザは“コア”コンテキストを選択している。この選択に基づいて、サブメニュー638が表示される。このサブメニューは、“承認を要求”、“レコードを作成”、“タスクを作成”、“レコードを削除”、“ログ”、“レコードを検索”、“電子メールを送信”、“レコードを更新”、及び“条件を待機”等の幾つかの特定のアクションから選択する能力をユーザに提供する。これらから、ユーザは“レコードを検索”を選択している。したがって、選択されたアクションを説明する情報ボックス640が表示され得る。
図6Eは、GUI642内のアクション指定の第2の部分を描写する。ポップアップウィンドウ644(ウィンドウ606と同様に、GUI642の上にオーバーレイされたペインであり得、別個のウィンドウではなくてもよい)は、レコードを検索するテーブルと、これらのレコードが満たさなければならない条件とを指定することを可能にし得る。ウィンドウ644内に示すように、(図6Dで指定されるような)アクションは、レコードを検索することであり、この検索を実施するテーブルはsc_request(ユーザによりなされるカタログリクエストを含むテーブル)である。sc_requestから返されるレコードは、“に対してリクエスト”フィールドがトリガーステップで識別されたユーザ(すなわち、アクティブステータスが変更されたユーザ)と一致するレコードである。
図6Eはまた、以前に定義されたトリガー並びに現在定義されているアクションに従って配列されたピル形状のユーザインターフェース要素(“ピル”)を含む列646を描写する。これらのピルは、点線の矢印により示されているように、列646から条件フィールド内の右端の選択可能なアイテム648にドラッグ可能である。このコンテキストでのユーザインターフェースピルは、典型的には、ワークフローで以前に指定されたデータを参照する楕円形のアイテムであり、このデータがワークフロー設計ツールで指定されると、ユーザインターフェース内に自動的に配置され得る。幾つかの実施形態では、(様々な形状の)ユーザインターフェースチップ又はタグが代わりに使用され得る。
特に、列646内の“トリガー”見出しの下にある2つのピルは、トリガーによって返されたユーザレコード(例えば、図6Cで指定されているようにアクティブから別の状態に変更されたsys_user内のエントリ)と、トリガーが動作するテーブル(例えば、図6Cで指定されるようなsys_user)とを指す。列646内の“アクション”見出しの下にある2つのピルは、図6Eで定義されているアクションによって見つけられたレコードと、これらのレコードが配置されているテーブル(例えば、sc_request)とを指す。
列646内のピル等のユーザインターフェース要素は、ワークフローで以前に指定又は参照されたデータ又はテーブルへの参照をユーザが簡単に含むことを可能にするため、ワークフローを指定するユーザにとって非常に便利である。このように、ユーザはこの情報への特定の参照を打ち込む必要はなく、代わりにピルをドラッグアンドドロップするだけで済む。
ユーザがウィンドウ644内に入力された情報に一旦満足すると、ユーザは“実行”ボタンを選択し得、さもなければ活性化し得る。この選択は、図6Eで、このボタンが破線で描写されていることにより示されている。ユーザがウィンドウ644のダイアログを一旦完了すると、ユーザがアクションに対するフローロジックを指定することを可能にするワークフロー設計ツールの次のフェーズが表示され得る。
図6Fは、GUI650でのフローロジック指定を描写する。フローロジックはアクションに関連付けられ得、アクションの実行方法を指定する。特に、652では、単語“Action”には、図6D及び図6Eで指定されたアクションの説明が注釈として付けられている。
ポップアップウィンドウ654は、図6D及び図6Eで指定されたアクションによって返された幾つか又は全てのアイテム上でワークフローが動作するか否かの指定を可能にし得る。“フローロジック”ボタンは、アクションではなくフローロジックが指定されていることを示すために破線で描写されている。この場合、ウィンドウ654内でなされた選択は、図6Eで指定されたクエリから返された全てのアイテム上でワークフローが動作することを指し示す。特に、ウィンドウ654の“から”フィールド内の“1. [sc_request] record”値は、フローロジックが652で指定されたアクション1の出力に適用されることを指し示す。特に、“から”フィールドの値は、ピルがそうしたピルを含む列からドラッグアンドドロップされることによりポピュレートされ得る。この列は、簡単にする目的のために図6Fには示されていないが、図6Eの列646に類似し得る。
ユーザがウィンドウ654内に入力された情報に一旦満足すると、ユーザは“実行”ボタンを選択し得、さもなければ活性化し得る。この選択は、図6Fで、このボタンが破線で描写されていることにより示されている。ユーザがウィンドウ654のダイアログを一旦完了すると、ユーザがフローロジックに対するサブアクションを指定することを可能にするワークフロー設計ツールの次のフェーズが表示され得る。
図6Gは、GUI656でのサブアクション指定を描写する。特に、658では、単語“Action”には、図6D、図6E、及び図6Fで指定されたアクション及びフローロジックの更新された説明が付随する。更に、このテキストは、フローロジックが指定されなくなったことを指し示すために灰色で表示される。特に、サブアクション指定は、メニュー636とサブメニュー638とを再び表示し、今回は“コア”と“レコードを更新”とが選択されている。したがって、GUI656は、図6D及び図6Eで定義されたアクションによって返されるアイテム毎にレコードが更新されるであろうことを指定するユーザを描写する。
図6Hは、GUI660でのこのサブアクション指定を継続する。ポップアップウィンドウ662は、図6Fで指定されたフローロジックによって返されたアイテムについてアクションの指定が実行されることを可能にし得る。特に、ウィンドウ662に示されているオプションは、トリガーによって返されるsys_userテーブル内の各レコードに対して、同じユーザに対してリクエストされたsc_requestテーブル内の何れのレコードも更新されるであろうことを指し示している。ユーザは、一致するレコードに対して更新される2つのフィールドも指定する。“リクエスト状態”フィールドは、退職した従業員の保留中のカタログリクエストをキャンセルするために、“閉鎖 キャンセル”に更新される。リクエストがキャンセルされた理由を指し示すために、“コメント”フィールドも“ユーザはシステムでアクティブではない”に更新される。
特に、“レコード”フィールドの値は、ピルがそうしたピルを含む列からドラッグアンドドロップされることによってポピュレートされ得る。この列は、簡単にする目的のために図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で識別された各レコードに対して、“に割り当て”フィールドが、識別された従業員のマネージャーに変更されることを指し示す。
このようにして、任意に複雑なフローチャート状のワークフローがデータ中心の方法で迅速に設計され得る。設計者は何れのコードも記述する必要がなく、適切なメニュー及びその他のインターフェース要素を用いて設計者を支援する一連のGUIによってワークフロー指定を通じてガイドされる。その結果、設計者は大幅に時間を節約する。実際には、ワークフローは、高水準プログラミング言語(JAVA(登録商標)、JAVASCRIPT(登録商標)、及びC++等)でワークフローを手動でコーディングするために通常必要な日数ではなく、数時間で指定され得ることが実験で示されている。
このワークフロー設計ツールの別の利点は、展開前に同じGUIによりワークフローをテスト可能であることである。図6KはGUI668を示し、それは、図6JのGUI660と同じ情報が含むが、そうしたテストの結果を反映する3つの列も含む。“状態”列は各ステップが完了したか否か(この例では全てのステップが完了している)を指し示し、“開始時刻”列は各ステップが開始した時刻を指し示し、“期間”列は各ステップの実施にかかったミリ秒単位での時間を指し示す。このことは、設計者が、各ステップが適切に実施されることを確認し、完了するまでに非常に長い時間がかかるステップを識別することを可能にする。代替的実施形態では、その他の情報が表示され得る。
図6A~図6Kの例では、ワークフローが設計される。こうしたプロセスを実行するユーザペルソナは、ワークフロー設計者と称され得る。しかしながら、アクションは、アクション設計者のペルソナを有するユーザによって、類似した方法で(例えば、同様のGUIを介して)設計され得る。したがって、アクション設計者は、公開され得るカスタムアクションを定義し得、公開されたアクションは、ワークフロー設計者によって選択されてワークフローに組み込まれ得る。
VI. リモートソフトウェアアプリケーションシステムの例
ソフトウェアベースのワークフロー設計ツールによって提供される統合ベースのアクションは、リモートネットワーク管理プラットフォームによって提供又は実行されないサードパーティアプリケーションによってサポートされるアクションも含み得る。こうしたソフトウェアアプリケーションは、リモートソフトウェアアプリケーションと称され得る。ワークフローは、そうした統合ベースのアクションを使用して、様々なリモートソフトウェアアプリケーションによって提供されるオブジェクト及び/又は関数と相互作用し得る。結果として、ワークフローは、(例えば、独立して開発及び/又は維持されなければならないソフトウェアアプリケーションの形式で)この機能を独立して実装する必要なしに、これらのリモートソフトウェアアプリケーションによって提供される機能を利用し得る。
特定のリモートソフトウェアアプリケーションとのこうした相互作用は、特定のリモートソフトウェアアプリケーションのためのインターフェース(すなわち、スポーク又は統合コネクタ)を集合的に構成する複数のアクションによって促進され得る。例えば、各アクションは、ワークフローが対応するオブジェクトと相互作用すること、及び/又はリモートソフトウェアアプリケーションの対応する関数を実行すること可能にし得る。幾つかの場合、ワークフローは、特定のリモートソフトウェアアプリケーションと直接通信し得る。すなわち、アクション設計ソフトウェアアプリケーションは、ワークフローが他のシステム(例えば、リモートソフトウェアアプリケーションシステム)の支援なしにリモートソフトウェアアプリケーションと相互作用し得るように、リモートソフトウェアアプリケーションのためのインターフェースを定義し得る。
他の場合では、しかしながら、ワークフローは、実行のために複数の異なるソフトウェアアプリケーションを公開するリモートソフトウェアアプリケーションシステムを利用し得る。すなわち、ワークフローはリモートソフトウェアアプリケーションシステムと相互作用し得、リモートソフトウェアアプリケーションシステムは、順に、ワークフローに代わって特定のリモートソフトウェアアプリケーションと相互作用する。幾つかの実装では、リモートソフトウェアアプリケーションシステムは、均一の又は標準化された方法でリモートソフトウェアアプリケーションの各々にアクセスするためのチャネル及び/又はプロセスを提供するように構成され得る。アクション設計ソフトウェアアプリケーションは、アプリケーション固有のインターフェースを定義することに伴う複雑さを軽減するために、この均一性を利用し得る。すなわち、対応するリモートソフトウェアアプリケーションと関連付けられた異なる標準、慣行、又は規則に各々が準拠する複数の異なるインターフェースを定義するのではなく、アクション設計ソフトウェアアプリケーションは、リモートソフトウェアアプリケーションシステムによって提供される均一性及び/又は標準化に準拠するインターフェースを定義し得る。
図7は、リモートソフトウェアアプリケーションシステムを介してアクセス可能なリモートソフトウェアアプリケーションを説明する。具体的には、図7は、リモートソフトウェアアプリケーション700~720及びリモートソフトウェアアプリケーションシステム740~760を説明している。リモートソフトウェアアプリケーションシステム740は、リモートソフトウェアアプリケーション700~720との相互作用を夫々可能にするAPI742~750を提供する。同様に、リモートソフトウェアアプリケーションシステム760は、他のリモートソフトウェアアプリケーション(図示せず)と相互作用するためのAPI762を提供する。リモートソフトウェアアプリケーションシステム740~760は、代替的に、リモートソフトウェアAPI管理システム、リモートソフトウェアAPI転送システム、又はリモートソフトウェアAPIブリッジシステムと称され得る。
リモートソフトウェアアプリケーション700~720の各々は、対応するコンピューティングシステムによってホスト及び実行され得る。一例では、リモートソフトウェアアプリケーション700~720は、サードパーティネットワーク340内のコンピューティングデバイスによってホスト及び実行され得る。リモートソフトウェアアプリケーションシステム740~760は、リモートソフトウェアアプリケーション700~720をホストするコンピューティングシステムとは異なり得、物理的に分離され得る。したがって、リモートソフトウェアアプリケーションシステム740~760は、実行のためにそれらの関数を公開するために、1つ以上のネットワークを介してリモートソフトウェアアプリケーション700~720と通信し得る。リモートソフトウェアアプリケーションシステム740~760は、例えば、IBM(登録商標)App Conenect、CLOUDE ELEMENTS(登録商標)、又は他の同様のシステム若しくはプロバイダであり得る。特に、リモートソフトウェアアプリケーションシステム740~760は、リモートネットワーク管理プラットフォーム320及び管理されるネットワーク300とは異なり得る。管理されるネットワーク300は、(例えば、リモートネットワーク管理プラットフォーム320により提供されるワークフロー設計ソフトウェアアプリケーションを介して)リモートソフトウェアアプリケーション700~720を実行するためにリモートソフトウェアアプリケーションシステム740~760を使用し得る。
リモートソフトウェアアプリケーション700は、オブジェクト702~704と関数706~708及び710とを含む。関数706~708は、オブジェクト702と相互作用する(例えば、作成、削除、アクセス、及び/又は修正する)ように構成され得、関数710は、オブジェクト704と相互作用するように構成され得る。同様に、リモートソフトウェアアプリケーション720は、オブジェクト722~724と関数726~728及び730~732とを含み得る。関数726~728は、オブジェクト722と相互作用するように構成され得、関数730~732は、オブジェクト724と相互作用するように構成され得る。オブジェクト702~704及び722~724は、一般的に、その個別のリモートソフトウェアアプリケーションの動作に関連する情報を保持するように構成された任意のデータ構造又はその一部を表し得る。例えば、リモートソフトウェアアプリケーション700は会計アプリケーションであり得る。したがって、オブジェクト702~704は、可能性の中でもとりわけ、会計、請求書、契約、顧客、従業員、見積もり、送り状、及びケースメッセージを含み得る。オブジェクト702が、例えば、送り状を表す場合、関数706~708は、可能性の中でもとりわけ、“送り状の作成”関数、“請求書の検索”関数、及び“請求書の修正”関数を含み得る。
ワークフロー、別のソフトウェアアプリケーション、又はコンピューティングデバイスは、それらの関数の実行をリクエストし、及び/又はそれらのオブジェクトと相互作用するために、リモートソフトウェアアプリケーション700及び/又は720と直接(例えば、リモートソフトウェアアプリケーションシステム740を利用せずに)相互作用し得る。しかしながら、これらのアプリケーションがそうした相互作用のためにどのように構成されるかにおいて、リモートソフトウェアアプリケーション700~720の間で違いがあり得る。例えば、リモートソフトウェアアプリケーションは、可能性のある違いの中でもとりわけ、その関数を呼び出すために使用される言語及び/若しくは構文、並びに/又はリモートソフトウェアアプリケーションがそれを介してアクセス可能な通信チャネル(例えば、コマンドラインインターフェース対representational state transfer(REST)API)が異なり得る。したがって、リモートソフトウェアアプリケーション700~720の各々に対してアクション設計ソフトウェアアプリケーションにより個別の直接インターフェースを生成するプロセスは、アプリケーション固有であり得、したがって、複雑で時間がかかり得る。
しかしながら、特に、リモートソフトウェアアプリケーションシステム740は、リモートソフトウェアアプリケーション700~720の各々と相互作用する方法を標準化し得るAPI742~750を提供し、アクション設計ソフトウェアアプリケーションが、均一なプロセスを介して複数の異なるリモートソフトウェアアプリケーションのためのインターフェースを生成することを可能にする。すなわち、API742は、関数706~708及び710と夫々相互作用するためのAPI関数744~746及び748を含む。同様に、API750は、関数726~728及び730~732と夫々相互作用するためのAPI関数752~754及び756~758を含む。API742~750の各々の実装は、その個別のリモートソフトウェアアプリケーションの特定の標準、プロセス、及び/又は規則を説明し得、それらに従って動作し得る。しかしながら、API742~750を識別する方法、それらのAPI関数を識別する方法、及び/又はAPI742~750と相互作用する方法は、APIに渡って類似し得る。API742~750及び762は、したがって、リモートソフトウェアアプリケーション700~720の間の任意のバリエーションを秘匿し得、削除し得、及び/又は取るに足らないものにし得、それによって、これらのリモートソフトウェアアプリケーションのためのインターフェースの定義を容易にする。
例えば、API742~750及び762は、ワークフローがハイパーテキスト転送プロトコル(HTTP)リクエスト及び応答を介して通信し得るREST APIであり得る。また、図8A~図8Eに関してより詳細に論じられるように、API742~750及び762の各々は、アクション設計ソフトウェアアプリケーションがそのためのインターフェースを定義することを可能にする対応するAPI仕様によって説明され得る。リモートソフトウェアアプリケーション700~720はそうした仕様を提供しないことがあり、したがって、(例えば、手動で定義する必要があることによって)インターフェースの定義をより困難にさせる。
特定のリモートソフトウェアアプリケーションがワークフローに統合される場合、ワークフローは、リモートソフトウェアアプリケーションシステム740を介してオブジェクト及び/又はその関数と相互作用し得る。すなわち、ワークフローは、第1のリクエストを、例えば、API742へ送信し得る。第1のリクエストは、例えば、API関数748が実行されることを指定し得る。したがって、リモートソフトウェアアプリケーションシステム740は、API関数748を実行し得、それは、リモートソフトウェアアプリケーション700へ、(順に、オブジェクト704と相互作用する)関数710の実行のための第2のリクエストを送信することを含む。第2のリクエストは、リモートソフトウェアアプリケーション700の任意のアプリケーション固有の規則、プロセス、及び/又は標準に準拠する第1のリクエストの再フォーマット化されたバージョンであり得る。
アプリケーション700は、関数710を実行し、出力を生成し得、それは、リモートソフトウェアアプリケーションシステム740へ送信され得る。リモートソフトウェアアプリケーションシステム740は、第1のリクエストに応答してワークフローへ送信される応答内にこの出力を含み得る。したがって、リモートソフトウェアアプリケーションシステム740は、ワークフローが、リモートソフトウェアアプリケーション700と直接通信することなく、及びリモートソフトウェアアプリケーション700の規則、プロセス、及び/又は標準に準拠するインターフェースを生成することなく、リモートソフトウェアアプリケーション700の関数及びオブジェクトを利用することを可能にし得る。
幾つかの実装では、リモートソフトウェアアプリケーションシステム740は、数十、数百、又は数千のリモートソフトウェアアプリケーションの実行を提供し得、それらの各々は、対応するインターフェースを介してワークフローに統合可能であり得る。特に、これらのインターフェースの各々は、個々のリモートソフトウェアアプリケーションへの直接インターフェースではなく、リモートソフトウェアアプリケーションシステム740の対応するAPIへのインターフェースであり得る。リモートソフトウェアアプリケーションシステム740は、リモートソフトウェアアプリケーションの関数を識別及び実行する標準化された均一な方法を提供し得るので、アクション設計ソフトウェアアプリケーションによってこれらのインターフェースを生成するプロセスは、直接インターフェースを生成するプロセスよりも単純であり得る。
VII. API仕様の例
リモートソフトウェアアプリケーションシステム740~760は、API742~750及び762の個別のAPI毎に、個別のAPIの属性を定義する対応する1つ以上の仕様を提供するように構成され得る。これらの仕様は、APIの態様の中でもとりわけ、ワークフローがAPIと通信する方法、APIを介して相互作用し得るオブジェクト、各APIが実行のために公開する関数、各関数の入力、及び各関数の出力を指し示し得る。仕様はまた、各リモートソフトウェアアプリケーションシステムによって提供される異なるAPI、及びAPIにアクセスするために使用され得るサービス識別子(例えば、ユーザカウント)を識別し得る。仕様は、したがって、アクション設計ソフトウェアアプリケーションがAPI毎に、その結果、これらのAPIを介して公開されるリモートソフトウェアアプリケーション毎にインターフェースを自動的に生成することを可能にし得る。
図8A、図8B、図8C、図8D、及び図8Eは、特定のリモートソフトウェアアプリケーションのためのインターフェースを構成するアクションを定義するために、アクション設計ソフトウェアアプリケーションにより使用され得る例示的な仕様の抜粋800、802、804、806、及び808(すなわち、抜粋800~808)を夫々説明する。API仕様は、リモートソフトウェアアプリケーションシステム740~760によって開発及び提供され得る。仕様の抜粋800~808は、抜粋800の1行目に指し示されているように、OPENAPI仕様標準の第3バージョン(3.0.0)に従って記述される。OPENAPI仕様は、representational state transfer(REST)APIを説明するためのフォーマットを定義する。しかしながら、特に、アクション設計ソフトウェアアプリケーションは、RESTと関連付けられているもの以外の標準、プラットフォーム、プロセス、規則、又はプロトコル(例えば、GRAPHQL、ODATA)に従って構築されたAPI、及びOPENAPI以外のAPI仕様フォーマット(例えば、RAML)をサポートするように構成され得る。
API仕様は階層的に構造化され得、この階層は、タグ及びそれらの個別の値のインデント又はネストを介して指し示され得る。例えば、図8Aの3行目のタグ“TITLE”、4行目の“DESCRIPTION”、6行目の“VERSION”は、2行目のタグ“INFO”に対してインデントされていることが示され、したがって、親タグ“INFO”の子である。こうした階層構造は、リモートソフトウェアアプリケーションシステムとそれらのAPIとの異なる属性をその中で識別するように、アクション設計ソフトウェアアプリケーションによるAPI仕様の解析を容易にする。特に、抜粋800~808はYAML Ain‘t Markup Language(YAML)で記述されることが示されているが、抜粋800~808は、代替的に、例えば、JavaScript Object Notation(JSON)等の別のフォーマットで記述され得る。
仕様は、2行目に指し示されるように、リモートソフトウェアアプリケーションシステム、そのAPI、API関数、及び/又はAPI関数が相互作用するオブジェクトの一般的な書誌情報(例えば、メタデータ)を提供し得る。この一般的な情報は、3行目に“Available Remote software applications(利用な可能なリモートソフトウェアアプリケーション)“として指し示される仕様のタイトル、4行目に“Specifies remote software applications exposed for execution by the remote software application system(リモートソフトウェアアプリケーションシステムによる実行のために公開されるリモートソフトウェアアプリケーションを指定)”として指し示される仕様の又はAPIの目的の説明、及び6行目に1.0.5として指し示されるAPIのバージョンを含み得る。特に、対応するインターフェースは、APIのバージョン毎に、又は少なくともAPIへの重大な変更を伴うバージョン毎に定義され得る。重大な変更は、可能性の中でもとりわけ、その入力、その出力、入力及び/若しくは出力のフォーマットを変更する、又は関数を削除するものであり得る。
仕様は、8行目に指し示されるように、リモートソフトウェアアプリケーションシステム及び/又はそのAPIと関連付けられた1つ以上のサーバを更に指し示し得る。具体的には、1つ以上のサーバは、これらのサーバをアドレッシングする、対応するベースユニフォームリソースロケーター(URL)によって指し示され得る。図8Aの例では、仕様のこのセクションは、利用可能なAPIの各々、したがって、リモートソフトウェアアプリケーションシステムによる実行のために公開されたリモートソフトウェアアプリケーションの各々を識別するために使用され得る。すなわち、第1のリモートソフトウェアアプリケーション、Application 1(例えば、リモートソフトウェアアプリケーション700)のためのAPI(例えば、API742)は、9行目及び10行目に指し示されるように、URL“HTTP://APP_1.REMOTE_APPLICATION_SYSTEM.COM”によりアドレッシングされ得る。同様に、第2のリモートソフトウェアアプリケーション、Application 2のためのAPIは、11行目及び12行目に指し示されているように、URL“HTTP://APP_2.REMOTE_APPLICATION_SYSTEM.COM”によりアドレッシングされ得る。
抜粋800は、13行目の省略記号により指し示されているように、リモートソフトウェアアプリケーションシステムによる実行のために公開された追加のリモートソフトウェアアプリケーションを指し示し得る。例えば、リモートソフトウェアアプリケーションシステムは、合計10個のリモートソフトウェアアプリケーションを公開し得、第3~第9のアプリケーションは抜粋800に示されていない。第10のリモートソフトウェアアプリケーション、Application 10(例えば、リモートソフトウェアアプリケーション720)のためのAPI(例えば、API750)は、14行目及び15行目に指し示されているように、URL“HTTP://REMOTE_APPLICATION_SYSTEM.COM/APP_10”によりアドレッシングされ得る。特に、第10のリモートソフトウェアアプリケーションの例では、アプリケーションは、“REMOTE_APPLICATION_SYSTEM.COM”ドメインのサブドメインとしてではなく、リソースパスパラメータ(すなわち、“/APP_10”)として指定される。抜粋800は、したがって、リモートソフトウェアアプリケーションシステムを介した実行に利用可能なリモートソフトウェアアプリケーションのリストを指し示し得る。
幾つかの場合、仕様は、アプリケーション毎に複数のURLを指し示し得る。例えば、Application 1のテスト目的で使用されるステージングサーバは、追加のURL“HTTP://STAGING_APP_1.REMOTE_APPLICATION_SYSTEM.COM”によりアドレッシングされ得る。幾つかの実装では、アクション設計ソフトウェアアプリケーションは、各APIによって公開される特定のAPI関数、したがって個別のリモートソフトウェアアプリケーションの関数及びオブジェクトを定義する追加の仕様を取得するために、ベースURLを使用し得る。或いは、仕様は、これらの追加の仕様がそれを介して取得され得る追加のURLを提供し得る。
アクション設計ソフトウェアアプリケーションがリモートソフトウェアアプリケーションのためのインターフェースを定義する場合、抜粋800に示されているベースURLは、個別のサーバデバイスにAPIの関数を呼び出させるパラメータをその中に含むように修正され得る。そのために、図8B、図8C、及び図8Dは、Application 1の例示的な関数に対するパラメータをその中に指し示すApplication 1の仕様の抜粋を説明する。すなわち、仕様は、APIの特定の関数にアクセスするためにURLに如何なるパラメータが含まれ得るかと、これらのパラメータをどのように含まれるかを指し示し得る。
図8Bの抜粋802は、この仕様が3行目に指し示されているように“Application 1 Functions”というタイトルであること、及び仕様が4行目及び5行目に指し示されているように“Specifies the functions of Application 1 that can be executed by way of the remote software application system(リモートソフトウェアアプリケーションシステムを介して実行され得るApplication 1の関数を指定)”であることを指し示している。7、8、及び9行目で、抜粋802は、Application 1の関数及びオブジェクトとの相互作用するために使用されるAPIを実行するように構成されたサーバデバイスに対するベースURLを再度指し示す。
抜粋802は、11行目に、APIのFUNCTION_1にアクセスするためにベースURLに追加され得るURLリソースパス及びリソースパスパラメータをも指し示す。13行目に指し示されるようなHTTP GETリクエストを12行目に指し示されているような“HTTP://APP_1.REMOTE_APPLICATION_SYSTEM.COM/FUNCTION_1/{INPUT_1}”へ送信することによって、ワークフローは、そのための入力としてINPUT_1を用いてFUNCTION_1のAPIの実行をリクエストし得る。この場合、“FUNCTION_1/{INPUT_1}”はリソースパスを表す一方、“INPUT_1”に代入される値はリソースパスパラメータを表す。特に、抜粋802の16行目は、“INPUT_1”の値が別のタイプのパラメータとしてではなく、リソースパスパラメータとして提供されることを指定している。
抜粋802は更に、18行目により指し示されているように“INPUT_1”の値がFUNCTION_1の実行に必要な入力であることを指定している。20行目は“INPUT_1”のスキーマ又は構造及び属性を指し示す。すなわち、“INPUT_1”は、整数データ型であり、21行目及び22行目により夫々指し示されているように、最小値は1である。したがって、INPUT_1の値が“5”を有するFUNCTION_1の実行をリクエストするために、ワークフローは、HTTPリクエストを“HTTP://APP_1.REMOTE_APPLICATION_SYSTEM.COM/FUNCTION_1/5”へ送信し得る。一例では、FUNCTION_1は、ID又は他の識別子の値が“5”であるオブジェクトを返すように構成され得る。しかしながら、特に、API関数は、幅広い範囲の動作を実施し得、関数の入力及び出力に対する例示的な名前は、したがって、コンテキストに基づいて変更され得る。
抜粋802は、23行目に指し示されているように、APIが送信し、ワークフローがHTTPリクエストに応答して受信し得るHTTP応答の属性をも定義する。すなわち、ある可能な応答は“HTTP200 OK”標準応答コードを表す“200”であり、それは、成功したリクエスト及び応答を指し示す。別の可能な応答は、“HTTP404 NOT FOUND”標準応答コードを表す“404”であり、それは、INPUT_1に対する提供された値を用いてFUNCTION_1を実行しても、何ら出力が生成されなかった(例えば、一致するデータベースエントリが見つからなかった)ことを指し示す。
“404”応答は、ステータスコード自体以外の追加情報を含まないことがあるが、“200”応答は、25~36行目で指定されるように、特定のフォーマットで編成されたFUNCTION_1の出力をも含み得る。すなわち、応答は、OUTPUT_1に対する整数値、OUTPUT_2に対する文字列値、及びOUTPUT_3に対する文字列値を含むJSONオブジェクトを含み得る。したがって、26~36行目は、FUNCTION_1が相互作用するオブジェクトの構造を指し示す。このように、抜粋802は、一般的に、対応するAPI関数がどのように振る舞い、どのオブジェクトと相互作用するかをアクション設計ソフトウェアアプリケーションに通知し、それによって、この関数を呼び出すアクションを定義することを可能にし、その出力を後続のアクションで利用することを可能にする。
図8Cは、2つのリソースパスパラメータとクエリパラメータとを入力として受け入れるAPIの第2の関数を定義するAPI仕様の抜粋804を説明する。1~2行目に指し示されているように、第2の関数は、HTTP GETリクエストを“HTTP://APP_1.REMOTE_APPLICATION_SYSTEM.COM/FUNCTION_2/{INPUT_2}/{INPUT_3}”へ送信することによって呼び出される。APIは、(i)5~10行目に指し示されるような整数パスパラメータ“INPUT_2”、(ii)11~15行目に指し示されるような文字列パスパラメータ“INPUT_3”、(iii)16~20行目に指し示されるような文字列クエリパラメータ“INPUT_4”、及び(iv)16~22行目に指し示されるような整数クエリパラメータ“INPUT_5”を入力として受け取ることを想定している。
クエリパラメータは、以下のフォーマット:“HTTP://EXAMPLE.COM/RESOURCE_PATH?KEY_1=VALUE_1&KEY_2=VALUE_2”においてURLの末尾に付け加えられたキー及び値のペアである。したがって、抜粋804は、INPUT_2=10、INPUT_3=“ACTIVE”、INPUT_4=“MARK”、及びINPUT_5=15を有するFUNCTION2の実行に対するリクエストが“HTTP://APP_1.REMOTE_APPLICATION_SYSTEM.COM/FUNCTION_2/10/ACTIVE?INPUT_4=MARK&INPUT_5=15”にアドレッシングされるべきであることを指定している。FUNCTION_2は、例えば、(非アクティブではなく)“ACTIVE”であるグループ“10”内の、ファーストネームが“MARK”であるユーザを返すように構成され得、結果の最大数を15に限定し得る。
特に、仕様は、必要のない幾つかの入力に対するデフォルト値を指し示し得る。したがって、クエリパラメータ“INPUT_5”に対しては、抜粋804は、22行目でこの入力がオプション(すなわち、REQUIRED:FALSE)であることを指し示し、25行目は、この入力に対する値が提供されていない場合、デフォルト値の20がそれに割り当てられることを指し示す。抜粋802と同様に、抜粋804はまた、FUNCTION2によって返される可能性のある応答(図示せず)を指し示し得る。
図8Dは、リソースパスパラメータ、HTTPヘッダーパラメータ、及びHTTPクッキーパラメータを入力として受け入れるAPIの第3の関数を定義する仕様の抜粋806を説明する。APIのこの第3の例示的関数は、1~3行目に指し示されているように、リソースパス“/FUNCTION_3/{INPUT_6}”により識別され得る。第3の関数は、5~10行目に指し示されるような整数リソースパスパラメータ“INPUT_6”と、11~16行目に指し示されるようなユニバーサルユニーク識別子(UUID)としてフォーマット化された文字列として提供されるHTTPヘッダーパラメータ“INPUT_7”と、17~22行目に指し示されるような0又は1の何れかの値を有する整数として提供されるHTTPクッキーパラメータ“INPUT_8”とを入力として必要とし得る。第3の関数は、対応するHTTP応答内に含まれる出力を生成し得る。この出力は、抜粋802に示したものと同様の方法でAPI仕様によって指し示され得る。
図8Eは、特定のAPI関数が相互作用するオブジェクトを指し示すための代替的なフォーマットを説明する。すなわち、抜粋808は、HTTPリクエストを“HTTP://APP_1.REMOTE_APPLICATION_SYSTEM.COM/FUNCTION_4”へ送信することによってApplication 1のFUNCTION_4が呼び出され得ることを指定している。3~9行目は、FUNCTION_4が生成するように構成される応答を指し示す。すなわち、FUNCTION_4はオブジェクトOBJECT_4を返す。このオブジェクトの構造は、FUNCTION_4に対する“RESPONSE”セクションの一部として直接定義されるのではなく、仕様の“COMPONENTS”セクション内で定義され得る。すなわち、12~22行目は、OBJECT_4が整数値を格納するように構成されたFIELD_1、文字列値を格納するように構成されたFIELD_2、及び整数値を格納するように構成されたFIELD_3で構成されることを指し示している。
このように、仕様は、(i)APIを介して相互作用され得るオブジェクト、(ii)APIを介して実行され得る関数、及び(iii)オブジェクトと関数との間の関係を別個に定義し得る。抜粋802(関数の一部として定義されるオブジェクト)と808(独立して定義されるオブジェクト及び関数)とにより説明されるオブジェクトを定義するための規則は両方とも有効であるが、抜粋808は、仕様の“$REF”セクションの明確な使用に起因して、アクション設計ソフトウェアアプリケーションが複数の関数を単一のオブジェクトに、より簡単かつ明確に関連付けることを可能にし得る。
API仕様は、APIの他の複数の可能な態様を更に定義し得る。例えば、API仕様は、可能性の中でもとりわけ、APIが従う認証標準又は手順、APIの関数への入力として提供され得又はAPIの関数からの出力として受け取られ得る他の様々なメディアタイプ(例えば、XML、フォームデータ、ポータブルドキュメントフォーマット(PDF)、及び様々な画像フォーマット)、非推奨の関数、シリアル化された方法でAPIにパラメータを提供する(例えば、複数の値を単一のキーに関連付けるクエリパラメータを提供する)ためのオプション、APIの1つ以上の関数によって使用されるコールバックURL、リンク、及び仕様拡張を定義し得る。例えば、OPENAPI3.0.0の場合、API仕様は、OPENAPI仕様標準で提供されている、及び/又はAPIによって利用されているAPIの任意の他の態様を定義し得る。
例えば、これら又はその他の仕様は、特定のAPIで使用され得るサービス識別子(例えば、ユーザカウント)を定義するために使用され得る。一例では、リモートソフトウェアアプリケーションに対応する各APIは、その仕様内に、そのAPIの関数のアクセス及び実行を許可するために使用可能なサービス識別子のリストを含み得る。或いは、各個別のサービス識別子は、個別のサービス識別子を使用することによって相互作用され得る関数及びオブジェクトを定義する異なる仕様と関連付けられ得る。このようにして、各サービス識別子は、各API及び対応するリモートソフトウェアアプリケーションの関数及びオブジェクトの様々なサブセットと相互作用することを可能にされ得る。
特に、抜粋802~808により説明されているAPI関数は、説明の目的のために単純化されている。API仕様は、しかしながら、抜粋802~808に示されているよりも非常に多くの異なるタイプの入力を受け入れ、非常に多くの異なるタイプの出力を生成する関数を定義し得る。
VIII. インターフェース設計及びワークフロー設計動作の例
図9Aは、リモートソフトウェアアプリケーションのためのインターフェースを定義することに関連する動作のメッセージ図を説明する。インターフェースは、リモートソフトウェアアプリケーションシステムのAPIの1つ以上の関数の実行を呼び出す複数のアクションで構成され得る。APIのこれらの関数は、順に、リモートソフトウェアアプリケーションの対応する関数の実行を呼び出す。インターフェースは、したがって、リモートソフトウェアアプリケーションシステムを介してリモートソフトウェアアプリケーションの関数を実行するために、ワークフローによって使用され得る。
具体的には、図9は、アクション設計ソフトウェアアプリケーション900、永続ストレージ902、及びリモートソフトウェアアプリケーションシステム740を説明する。アクション設計ソフトウェアアプリケーション900は、代替的に、ソフトウェアベースのアクション設計ツール、アクション定義ソフトウェアアプリケーション、又はアクション設計ソフトウェアアプリケーションと称され得る。永続ストレージ902は、幾つかの実装では、データベースの形式をとり得る。一例では、アクション設計ソフトウェアアプリケーション900及び永続ストレージ902は、リモートネットワーク管理プラットフォーム320の計算インスタンス(例えば、計算インスタンス322)に配備され得、又はその一部を形成し得る。この計算インスタンスは、管理されるネットワーク300に割り当てられ得、したがって、そのためのインターフェース及びワークフローを定義するために使用され得る。リモートソフトウェアアプリケーションシステム740は、アクション設計ソフトウェアアプリケーション900によって定義されるアクションの1つ以上によって呼び出されるAPIを提供及び維持するコンピューティングシステムであり得る。したがって、アクション設計ソフトウェアアプリケーションは、インターネット等のネットワークを介してリモートソフトウェアアプリケーションシステム740と通信し得る。
アクション設計ソフトウェアアプリケーション900は、ブロック907によって指し示されるように、リモートソフトウェアアプリケーションシステムに対するサービス識別子を取得することによってインターフェースの定義を開始し得る。サービス識別子は、ユーザ名とパスワードとの組み合わせ、ウェブトークン(例えば、JSONウェブトークン)、又はアクション設計ソフトウェアアプリケーション900がリモートソフトウェアアプリケーションシステム740のコンテンツに接続してアクセスすることを可能にする別の形式のクレデンシャルであり得る。サービス識別子はまた、リモートソフトウェアアプリケーションシステムをアドレッシングし、サービス識別子が対応するURLを含み得、又はそれと関連付けられ得、したがって、アクション設計ソフトウェアアプリケーション900がリモートソフトウェアアプリケーションシステムと通信することを可能にする。
したがって、サービス識別子は、アクション設計ソフトウェアアプリケーション900が、様々なリモートソフトウェアアプリケーションがワークフローにそれを介してアクセス可能なリモートソフトウェアアプリケーションシステムを識別することを可能にし得る。幾つかの場合、このサービス識別子はまた、リモートソフトウェアアプリケーションシステム740のAPIにアクセスするためにワークフローによって使用可能であり得る。或いは、アクション設計ソフトウェアアプリケーション900によって使用されるサービス識別子は、ワークフローによって使用可能なサービス識別子とは異なり得る。
ブロック907においてサービス識別子を取得することに基づいて、又はそれに応答して、アクション設計ソフトウェアアプリケーション900は、矢印908によって指し示されるように、リモートソフトウェアアプリケーションシステム740に、利用可能なリモートソフトウェアアプリケーションの識別をリクエストするように構成され得る。利用可能なリモートソフトウェアアプリケーションは、リモートソフトウェアアプリケーションシステム740が、これらのアプリケーションのオブジェクト及び関数と相互作用するために使用され得るAPIを提供するアプリケーションであり得る。矢印908でのリクエストに基づいて、又はそれに応答して、リモートソフトウェアアプリケーションシステム740は、矢印910によって指し示されるように、利用可能なリモートソフトウェアアプリケーションの識別子を提供するように構成され得る。一例では、識別子は、図8Aに示されるものによく似た仕様の形式をとり得、利用可能な各リモートソフトウェアアプリケーションは、そのためのAPIをホストするサーバの対応するURLによって識別される。他の例では、識別子は、例えば、利用可能なリモートソフトウェアアプリケーションの名前のリスト又はアレイとしてを含む、他の方法で提供され得る。
矢印910での識別子の受信に基づいて、又はそれに応答して、アクション設計ソフトウェアアプリケーション900は、ブロック912によって指し示されるように、インターフェースが定義される特定のリモートソフトウェアアプリケーションをそこから選択するように構成され得る。幾つかの実装では、この選択は自動的であり得る。例えば、アクション設計ソフトウェアアプリケーション900は、インターフェースがまだ定義されていない特定のリモートソフトウェアアプリケーションを選択し得る。他の実装では、選択は、ユーザによってなされた選択に少なくとも部分的に基づき得る。例えば、アクション設計ソフトウェアアプリケーション900は、利用可能なリモートソフトウェアアプリケーションがそれを介して表示され、特定のリモートソフトウェアアプリケーションがそこから選択されるグラフィカルユーザインターフェースを提供し得る。
ブロック912での特定のリモートソフトウェアアプリケーションの選択に基づいて、又はそれに応答して、アクション設計ソフトウェアアプリケーション900は、矢印914によって指し示されるように、リモートソフトウェアアプリケーションシステム740へ、特定のリモートソフトウェアアプリケーションに対するサービス識別子に対するリクエストを送信するように構成され得る。これらのサービス識別子は、ブロック907で取得されるものとよく似ており、ユーザ名とパスワードとの組み合わせ、ウェブトークン、又はその他の認証クレデンシャルを含み得る。これらのサービス識別子は、ワークフローがリモートソフトウェアアプリケーションシステム740により提供されるAPI及び/又はリモートソフトウェアアプリケーションと相互作用することを可能にし得る。すなわち、サービス識別子は、その関数を実行する前に、APIによって及び/又はリモートソフトウェアアプリケーションによってリクエストされ得る。
サービス識別子は、ワークフローが相互作用可能であり得る関数及びオブジェクトの範囲を定義し得る。すなわち、幾つかのサービス識別子(例えば、管理者アカウントと関連付けられているもの)は、他のサービス識別子(例えば、非管理者ユーザと関連付けられているもの)よりも非常に多くのリモートソフトウェアアプリケーション、関数、及び/又はオブジェクトへのアクセスを可能にし得る。
矢印914でのリクエストの受信に基づいて、又はそれに応答して、リモートソフトウェアアプリケーションシステム740は、矢印916によって指し示されるように、リクエストされたサービス識別子をアクションデザインソフトウェアアプリケーション900へ送信するように構成され得る。一実装では、サービス識別子は、API仕様の形式で(例えば、その“SECURITY”セクションで)提供され得る。他の実装では、サービス識別子は、リスト、アレイ、又はその他のデータ構造として提供され得る。
アクション設計ソフトウェアアプリケーション900はまた、矢印918によって指し示されるように、特定のリモートソフトウェアアプリケーションの仕様をリクエストするように構成され得る。図8A~図8Eに関して論じたように、仕様は、リモートソフトウェアアプリケーションシステム740を介して特定のリモートソフトウェアアプリケーションの関数を呼び出し、オブジェクトと相互作用するための標準、プロセス、及びその他の規則を定義し得る。特に、仕様の一部は、特定のリモートソフトウェアアプリケーションが動作するように構成されている方法(例えば、リモートソフトウェアアプリケーションの関数により必要とされる入力)によって決定され得る一方、別の部分は、リモートソフトウェアアプリケーションシステム740がワークフローに代わって特定のリモートソフトウェアアプリケーションと相互作用する方法(例えば、リモートソフトウェアアプリケーションシステム740のAPIが動作する方法)によって決定され得る。
矢印918でのリクエストの受信に基づいて、又はそれに応答して、リモートソフトウェアアプリケーションシステム740は、矢印920によって指し示されるように、リクエストされた仕様をアクション設計ソフトウェアアプリケーション900へ送信するように構成され得る。特に、幾つかの実装では、矢印914及び916の動作は、矢印918及び920の動作と夫々組み合わされ得る。これは、例えば、特定のリモートソフトウェアアプリケーションの仕様が、特定のリモートソフトウェアアプリケーションにアクセスするために使用可能なサービス識別子もその中に定義している場合であり得る。
矢印916でのサービス識別子及び/又は矢印920での仕様の受信に基づいて、又はそれに応答して、アクション設計ソフトウェアアプリケーション900は、特定のリモートソフトウェアによりワークフローに公開され又は利用可能にされるオブジェクト及び関数を判定するように構成され得る。具体的には、仕様は、(i)特定のリモートソフトウェアアプリケーションを介してアクセス可能な1つ以上のオブジェクト、及び(ii)1つ以上のオブジェクトと相互作用するために呼び出し可能な特定のリモートソフトウェアアプリケーションの複数の関数を判定するために、アクション設計ソフトウェアアプリケーション900により使用され得る。例えば、仕様の抜粋802~808の場合、オブジェクトは、オブジェクトの中でもとりわけ、OUTPUT_1~OUTPUT_3(図8Bの29~36行目)及びOBJECT_4(図8Eの14~22行目)で構成されるオブジェクトを含み得る。関数は、FUNCTION_1(図8Bの12行目)、FUNCTION_2(図8Cの1行目)、FUNCTION_3(図8Dの1行目)、及びFUNCTION_4(図8Eの1行目)を含み得る。
ブロック922でのオブジェクト及び関数の判定に基づいて、又はそれに応答して、アクション設計ソフトウェアアプリケーション900は、ブロック924によって指し示されるように、特定のリモートソフトウェアアプリケーションのためのインターフェースを定義する複数のアクションを生成するように構成され得る。複数のアクションの各個別のアクションは、実行される場合に、リモートソフトウェアアプリケーションシステム740へリクエストを送信することによって、複数の関数の内の1つ以上の対応する関数の実行を呼び出すように構成され得る。リモートソフトウェアアプリケーションシステム740は、順に、このリクエストの修正バージョンを特定のリモートソフトウェアアプリケーションへ送信し得、特定のリモートソフトウェアアプリケーションは、リクエストで指定された任意の入力に従って1つ以上の対応する関数を実行し得る。リモートソフトウェアアプリケーションシステム740は、特定のリモートソフトウェアアプリケーションから、1つ以上の対応する関数の出力をその後受け取り得、それは、個別のアクションに戻され得る。したがって、個別のアクションは、リクエストに応答して、及びリモートソフトウェアアプリケーションシステムを介して、1つ以上の対応する関数の出力を受け取り得る。
各個別のアクションは、(i)1つ以上の対応する関数の入力に対応する入力変数、及び(ii)1つ以上の対応する関数の出力に対応する出力変数を含むように定義され得る。入力変数は、ワークフローの実行中にリモートソフトウェアアプリケーションシステム740へ送信されるリクエストのパラメータ(例えば、URLリソースパスパラメータ、URLクエリパラメータ、HTTPヘッダーパラメータ、HTTPボディパラメータ、及び/又はHTTPクッキーパラメータ)にマッピングされ得る。したがって、個別のアクションが実行される場合、入力変数の値は、このマッピングに従ってリクエスト内に含まれ得る。同様に、出力変数は、リモートソフトウェアアプリケーションシステム740からの応答(例えば、そのAPI)の一部にマッピングされ得る。したがって、リモートソフトウェアアプリケーションシステム740からの応答の受信は、1つ以上の対応する関数の出力の値を応答から抽出させ得、この第2のマッピングに従って出力変数内に格納させ得る。
ブロック924でのアクションの生成に基づいて、又はそれに応答して、アクション設計ソフトウェアアプリケーション900は、矢印926によって指し示されるように、永続ストレージ902内へのインターフェースの定義の格納をリクエストするように構成され得る。矢印926でのリクエストの受信に基づいて、又はそれに応答して、永続ストレージ902は、ブロック928によって指し示されるように、インターフェースの定義をその中に格納するように構成され得る。格納されたインターフェースは、その後、インターフェースのアクションの内の1つ以上を組み込む1つ以上のワークフローを定義するために、ワークフロー設計ソフトウェアアプリケーションにより検索され得る。幾つかの実装では、アクション設計ソフトウェアアプリケーション900はまた、インターフェース又はアクションの第1のサブセットをアクティブとして指定し、第2のサブセットを非アクティブとして指定するように構成され得る。そうした指定は、例えば、アクション設計ソフトウェアアプリケーション900のユーザインターフェースを介して提供される手動選択に基づき得る。アクティブなアクション及び/又はインターフェースは、ワークフロー設計ソフトウェアアプリケーションを介したワークフローへの統合に利用可能であり得るが、非アクティブなアクション及び/又はインターフェースは、この目的には利用可能ではないことがある。
したがって、図9Bは、リモートソフトウェアアプリケーションのインターフェースを利用するワークフローを定義することに関係する動作のメッセージ図を説明している。すなわち、ワークフロー設計ソフトウェアアプリケーション906は、アクション設計ソフトウェアアプリケーション900により定義されたインターフェースの1つ以上のアクションを含むワークフローを定義するように構成され得る。ワークフロー設計ソフトウェアアプリケーション906は、代替的に、ソフトウェアベースのワークフロー設計ツール、ワークフロー定義ソフトウェアアプリケーション、又はワークフロー設計ソフトウェアアプリケーションと称され得る。一例では、ワークフロー設計ソフトウェアアプリケーション906は、リモートネットワーク管理プラットフォーム320の計算インスタンス(例えば、計算インスタンス322)内に配備され得、又はその一部を形成し得る。例えば、ワークフロー設計ソフトウェアアプリケーション906及びアクション設計ソフトウェアアプリケーション900は、1つのソフトウェアパッケージ又はシステムの一部であり得る。
ワークフロー設計ソフトウェアアプリケーション906は、矢印930によって指し示されるように、永続ストレージ902に、リモートソフトウェアアプリケーション950のインターフェースの定義をリクエストするように構成され得る。幾つかの場合、矢印930でのリクエストは、インターフェースの全体(例えば、インターフェースを構成する全てのアクション)ではなく、インターフェースの1つ以上のアクションの形式を取り得る。このリクエストは、例えば、ワークフローを定義する過程の間にワークフロー設計ソフトウェアアプリケーション906により提供されるユーザインターフェースを介したインターフェース又はそのアクションの選択に応答して生成され得る。矢印930でのリクエストの受信に基づいて、又はそれに応答して、永続ストレージ902は、矢印932によって指し示されるように、インターフェースの定義を検索し、それをワークフロー設計ソフトウェアアプリケーション906に提供するように構成され得る。
幾つかの実装では、アクション設計ソフトウェアアプリケーション900は、インターフェースの定義の各々を定期的にリフレッシュするように構成され得る。すなわち、アクション設計ソフトウェアアプリケーション900は、仕様の更新されたバージョンを取得し、オブジェクト及び/又は関数を識別及び変更し、更新されたインターフェースを生成するために影響を受ける任意のアクションを更新するように構成され得る。したがって、幾つかの場合、矢印932で取得された定義は、最初の生成以降に1回以上更新されたインターフェースのバージョンを表し得る。
代替的又は追加的に、幾つかの場合、ワークフロー設計ソフトウェアアプリケーション906による永続ストレージ902からの特定のインターフェース定義の検索は、インターフェースの更新を発動し得る。すなわち、永続ストレージが矢印932において定義を提供する前に、永続ストレージ902は、この特定のインターフェースがワークフローに統合されるようにリクエストされている指標をアクション設計ソフトウェアアプリケーション900へ送信し得る。この指標に基づいて、又はそれに応答して、アクション設計ソフトウェアアプリケーション900は、このインターフェースに対応するリモートソフトウェアアプリケーション950に対する更新された仕様を取得し、更新された仕様に基づいてオブジェクト及び/又は関数の任意の変更を識別し、これらの変更に基づいて更新されたインターフェースを生成するように構成され得る。アクション設計ソフトウェアアプリケーション900は、永続ストレージ902内へのこの更新されたインターフェースの定義の格納をその後リクエストし得る。永続ストレージ902は、したがって、ワークフロー設計ソフトウェアアプリケーション906に、古くなった出力を提供するのではなく、矢印932で更新されたインターフェースの定義を提供し得る。
矢印932での定義の受信に基づいて、又はそれに応答して、ワークフロー設計ソフトウェアアプリケーション906は、ブロック934によって指し示されるように、その中にインターフェースを統合するワークフローを定義するように構成され得る。そうしたワークフローは、それによって提供される対応するオブジェクトと相互作用するために、リモートソフトウェアアプリケーション950の特定の関数の実行を呼び出すようにインターフェースの1つ以上のアクションを使用し得る。インターフェースの1つ以上のアクションは、ワークフローの他の部分によって判定された入力値として受信され得、これらのアクションの出力がワークフローの更に別の部分で使用されることを可能にし得る。したがって、リモートソフトウェアアプリケーション950は実際には他のリモートコンピューティングシステムによって実行され得るが、リモートソフトウェアアプリケーション950のインターフェースは、ワークフローがリモートソフトウェアアプリケーション950をワークフローと一緒にローカルで実行されたかのように扱うことを可能にし得る。
ブロック934でのワークフローの定義及び/又はワークフロー内で指定された特定のトリガーの発生に基づいて、又はそれに応答して、ワークフロー定義アプリケーション906(又は別のソフトウェアアプリケーション)は、ブロック936により指し示されるように、ワークフローを実行するように構成され得る。ワークフローの実行がリモートソフトウェアアプリケーション950のインターフェースのアクションに到達した場合、ワークフロー設計ソフトウェアアプリケーション906は、矢印938によって指し示されるように、リモートソフトウェアアプリケーションシステム740へ、リモートソフトウェアアプリケーション950の関数の実行に対するリクエストを送信するように構成され得る。リクエストは、対応するアクションによって決定されるように、その中に関数に対する入力値を含み得る。
矢印938でのリクエストの受信に基づいて、又はそれに応答して、リモートソフトウェアアプリケーションシステム740は、ブロック940によって指し示されるように、矢印938でのリクエストによって指定されたAPI関数を実行するように構成され得る。このAPI関数の実行は、リクエスト938をリモートソフトウェアアプリケーション950と互換性のあるフォーマット又は状態に変換し得る。一例では、リモートソフトウェアアプリケーション950が図7のリモートソフトウェアアプリケーション700に対応すると仮定すると、矢印938でのリクエストは、API742のAPI関数744を指定し得、したがって、関数706の実行を遂行するために、リモートソフトウェアアプリケーションシステム740にAPI関数744を実行させる。特に、矢印938で関数が指定される方法は、リモートソフトウェアアプリケーションシステム740が、利用可能なリモートソフトウェアアプリケーションの属性を定義するために提供する仕様をどのように構造化及び/又はフォーマット化するかに依存し得る。
ブロック940での対応するAPI関数の実行は、矢印942によって指し示されるように、リモートソフトウェアアプリケーションシステム740に、ワークフローに統合された関数の実行に対するリクエストをリモートソフトウェアアプリケーション950へ送信させ得る。矢印942でのリクエストの受信に基づいて、又はそれに応答して、リモートソフトウェアアプリケーション950は、ブロック944によって指し示されるように、指定された関数を実行するように構成され得る。ブロック944での関数の実行に基づいて、又はそれに応答して、リモートソフトウェアアプリケーション950は、矢印946によって指し示されるように、リモートソフトウェアアプリケーションシステム740に関数の出力を提供するように構成され得る。
矢印946での関数の出力の受信に基づいて、又はそれに応答して、リモートソフトウェアアプリケーションシステム740は、矢印948によって指し示されるように、ワークフロー設計ソフトウェアアプリケーション906に、関数の出力を含む応答を提供するように構成され得る。特に、矢印938でのリクエストは、矢印942でのリクエストとフォーマットが異なり得るため、矢印948での応答は、同様に、矢印946での応答とは異なるフォーマットを含み得る。異なるフォーマット間のこの変換は、リモートソフトウェアアプリケーションシステム740によって提供される対応するAPI関数によって処理され得る。矢印948での応答の受信に基づいて、又はそれに応答して、ワークフロー設計ソフトウェアアプリケーション906は、ブロック949によって指し示されるように、関数の出力に基づいてワークフローを実行し続け得る。特に、ワークフローは、リモートソフトウェアアプリケーション950の他の関数及び/又はリモートソフトウェアアプリケーションシステム740を介して提供される他のリモートソフトウェアアプリケーションの他の関数を呼び出し得る。
IX. ワークフローの例
図10は、ワークフロー1000の概略的表現を説明する。ワークフロー1000は、リモートソフトウェアアプリケーションの関数を呼び出すインターフェースアクション1060と、リモートソフトウェアアプリケーションの機能を呼び出さないことがあるアクション1008及び1040とがその中に統合されて含む。アクション1060、1008、及び1040の変数は、ワークフロー1000を通るデータの例示的な流れを説明するために相互接続されて示されている。特に、幾つかの実装では、ワークフロー1000は、省略記号で指し示されるような追加のアクション、又はより少ないアクションを含み得る。アクションがワークフローに統合されている、及び/又は統合されることを意図している場合、アクションは、代替的に、ワークフローアクションと称され得る。
アクション1008は、入力変数1010、1012、及び1014を含む。ワークフロー1000の実行の間、アクション1008の入力変数1010、1012、及び1014には、入力値1002、1004、及び1006が夫々割り当てられる。入力値1002、1004、及び1006は、可能性の中でもとりわけ、ワークフロー1000における他のアクションの出力、ユーザ入力、又はデータベースから検索されたデータを表し得る。アクション1008は、出力変数1016、1018、及び1020を更に含み、それらの各々は、アクション1008によって定義されたロジックに従って処理された入力値1002、1004、又は1006の内の1つ以上を表す。例えば、出力変数1020は、データベースから検索され、入力値1002(例えば、{ラストネーム}、{ミドルネームのイニシャル}、{ファーストネーム}として本来フォーマット化された名前)としてアクション1008に提供される文字列の修正されたバージョン(例えば、{ファーストネーム}、{ラストネーム}として再フォーマット化された名前)を格納し得る。出力変数1016、1018、及び1020は、インターフェースアクション1060の入力変数1024、1026、及び1028に夫々接続され、したがって、これらの変数の値がワークフローを通じてどのように伝播されるかを指し示す。
インターフェースアクション1060は、入力変数1024、1026、及び1028の値に基づいてAPIクエリ1029を生成するように構成される。APIクエリ1029は、インターフェースアクション1060に対応するリモートソフトウェアアプリケーションの仕様によって定義された規則に従って生成され得る。APIクエリ1029は、APIクエリ1029によって呼び出される特定のリモートアプリケーションシステム及びこの特定のリモートアプリケーションシステムに対応する認証クレデンシャルを識別するのを支援する接続エイリアスを含むように生成され得る。接続エイリアスを使用することによって、システム固有の接続情報は、アクション(例えば、アクション1060)の定義から切り離され得、したがって、アクションが例えば、複数の異なる認証クレデンシャルを使用することを可能にする。APIクエリ1029は、その対応するAPI関数の実行を呼び出すために、リモートソフトウェアアプリケーションシステム(例えば、740)へ送信される。API関数は、順に、リモートソフトウェアアプリケーションの対応する関数の実行をリクエストし、そこからその出力を受け取る。
同様に、インターフェースアクション1060は、リモートソフトウェアアプリケーションシステムからAPI応答1030を受信するように構成される。API応答1030は、その中に、APIクエリ1029によって呼び出されるリモートソフトウェアアプリケーション関数の出力値を含む。これらの出力値は、インターフェースアクション1060によって、対応する出力変数1032、1034、及び1038にマッピングされる。
出力変数1032、1034、及び1038の値は、順に、アクション1040の入力変数1042、1044、及び1046に割り当てられ、伝播される。幾つかの場合、API応答1030は、インターフェースアクション1060からアクション1040に渡されない出力値を含み得る。例えば、リモートソフトウェアアプリケーションからインターフェースアクション1060によって検索されたオブジェクトの幾つかの部分のみが、ワークフロー1000の残余により使用され得る。アクション1040は、出力変数1048、1050、及び1052の出力値1054、1056、及び1058を夫々生成するために、入力変数1042、1044、及び1046を処理する。
したがって、インターフェースアクション1060のワークフローへの統合は、インターフェースアクション1060がアクション1008の出力上で動作することを可能にし、アクション1040がインターフェースアクション1060の出力上で動作することを可能にする。言い換えれば、インターフェースアクション1060は、リモートソフトウェアアプリケーションの対応する関数が、アクション1008及び1040と同じコンピューティングシステムの一部であるかのように呼び出されることを可能にする。また、インターフェースアクション1060は、アクション設計ソフトウェアアプリケーションによって自動的に定義され、ワークフロー1000をプログラミングすることは、一般的に、アクション1060、1008、及び1040の入力変数と出力変数との間の接続を定義することのみを含む。したがって、ワークフロー設計者は、インターフェースアクション1060によって呼び出されるAPI関数及び/又はリモートソフトウェアアプリケーション関数に関して、もしあれば、多くの詳細を知る必要がなくてもよい。
X. 動作例
図11は、例示的な実施形態を説明するフローチャートである。図11によって説明されるプロセスは、コンピューティングデバイス100等のコンピューティングデバイス、及び/又はサーバクラスタ200等のコンピューティングデバイスのクラスタによって実行され得る。しかしながら、プロセスは、他のタイプのデバイス又はデバイスサブシステムによって実行され得る。例えば、プロセスは、ラップトップ又はタブレットデバイス等のポータブルコンピュータによって実行され得る。
図11の実施形態は、そこに示されている機構の内の何れか1つ以上を削除することによって簡略化され得る。更に、これらの実施形態は、以前の図の何れかの機構、態様、及び/又は実装と組み合わされ得、又は本明細書で他の方法で説明され得る。
ブロック1100は、ワークフローへの統合のためのリモートソフトウェアアプリケーションの個別のインターフェースを定義するように構成されたアクション設計ソフトウェアアプリケーションによって、リモートソフトウェアアプリケーションが実行のためにそれを介して公開されるリモートソフトウェアアプリケーションシステムを識別することを含む。永続ストレージは、個別のインターフェースの定義を格納するように構成され得る。
ブロック1102は、アクション設計ソフトウェアアプリケーションによって、及びリモートソフトウェアアプリケーションシステムから、リモートソフトウェアアプリケーションの内の特定のリモートソフトウェアアプリケーションの属性を定義する仕様を取得することを含む。
ブロック1104は、アクション設計ソフトウェアアプリケーションによって、及び仕様に基づいて、(i)特定のリモートソフトウェアアプリケーションを介してアクセス可能な1つ以上のオブジェクト、及び(ii)1つ以上のオブジェクトと相互作用するために呼び出し可能な特定のリモートソフトウェアアプリケーションの複数の関数を判定することを含む。
ブロック1106は、アクション設計ソフトウェアアプリケーションによって、特定のリモートソフトウェアアプリケーションのためのインターフェースを定義する複数のアクションを生成することを含む。複数のアクションの各個別のアクションは、実行される場合に、(i)リモートソフトウェアアプリケーションシステムへリクエストを送信することによって複数の関数の内の1つ以上の対応する関数の実行を呼び出し、(ii)リクエストに応答して、及びリモートソフトウェアアプリケーションシステムを介して、1つ以上の対応する関数の出力を受け取るように構成され得る。
ブロック1108は、インターフェースを定義するために複数のアクションを永続ストレージ内に格納することを含む。
幾つかの実施形態では、リモートソフトウェアアプリケーションは、複数の異なるリモートコンピューティングシステムによってホストされ得る。リモートソフトウェアアプリケーションシステムは、ワークフローに代わる実行のためにリモートソフトウェアアプリケーションを公開するために、異なるリモートコンピューティングシステムの各々に通信可能に接続され得る。
幾つかの実施形態では、特定のリモートソフトウェアアプリケーションは、リモートソフトウェアアプリケーションシステムによって提供されるAPIを介してアクセス可能であり得る。複数の関数の各個別の関数の実行は、APIの対応するAPI関数を介して呼び出し可能であり得る。仕様は、APIの複数の関数を定義し得る。各個別のアクションは、ワークフローによって実行される場合に、対応するAPI関数へリクエストを送信することによって、1つ以上の対応する関数の実行を呼び出すように構成され得る。リモートソフトウェアアプリケーションシステムは、特定のリモートソフトウェアアプリケーションに、リクエストの受信に応答して1つ以上の対応する関数を実行させるように構成され得る。
幾つかの実施形態では、リモートソフトウェアアプリケーションシステムを識別することは、リモートソフトウェアアプリケーションシステムをアドレッシングするURLを取得することと、URLを介して、ワークフローに代わる実行のためにリモートソフトウェアアプリケーションシステムを介して公開されているリモートソフトウェアアプリケーションのリストを取得することを含み得る。リモートソフトウェアアプリケーションの個別のリモートソフトウェアアプリケーション毎に、ワークフローが個別のリモートソフトウェアアプリケーションの複数の関数の実行を呼び出すことを可能にする1つ以上のサービス識別子のリストが取得され得る。複数のアクションの各個別のアクションは、1つ以上の対応する関数の実行を呼び出すために、1つ以上のサービス識別子の内の特定のサービス識別子を使用するように構成可能であり得る。
幾つかの実施形態では、特定のリモートソフトウェアアプリケーションのためのインターフェースを定義する複数のアクションを生成することは、(i)第1の部分のアクションがワークフローへの統合に利用可能であるように、複数のアクションの第1の部分を有効にすることと、(ii)第2の部分のアクションがワークフローへの統合に利用可能ではないように、複数のアクションの第2の部分を無効にすることを含み得る。
幾つかの実施形態では、仕様によって定義される属性は、複数の関数の個別の関数毎に、(i)個別の関数が実行のためにそれを介して公開されるリモートソフトウェアアプリケーションシステムのAPIのURLと、(ii)個別の関数の入力と、(iii)個別の関数の出力とを含み得る。インターフェースを定義する複数のアクションを生成することは、個別のアクション毎に、(i)1つ以上の対応する関数の入力に対応する個別のアクションの入力変数と、(ii)1つ以上の対応する関数の出力に対応する個別のアクションの出力変数とを生成することを含み得る。個別のアクション毎に、第1のマッピングは、入力変数と、リモートソフトウェアアプリケーションシステムへ送信されるリクエストのパラメータとの間で判定され得る。個別のアクションの実行は、APIのURLへリクエストを送信することによって、個別の関数の実行を呼び出し得る。リクエストは、第1のマッピングに従って入力変数の値をその中に含み得る。個別のアクション毎に、第2のマッピングは、出力変数とAPIからの応答との間で判定され得る。応答はリクエストに対するものであり得る。APIからの応答の受信は、1つ以上の対応する関数の出力の値を、第2のマッピングに従って出力変数内に格納させ得る。
幾つかの実施形態では、APIへ送信されるリクエストのパラメータは、(i)APIをホストするサーバデバイスによって提供される特定のリソースを識別するURLリソースパスパラメータ、(ii)キー及び値のペアを含むURLクエリパラメータ、(iii)リクエストのHTTPヘッダーとしてAPIに提供されるヘッダーパラメータ、(iv)リクエストのHTTPボディの一部としてAPIに提供されるボディパラメータ、又は(v)リクエストのHTTPクッキー内でAPIに提供されるクッキーパラメータの内の少なくとも1つを含み得る。
幾つかの実施形態では、ワークフロー設計ソフトウェアアプリケーションは、個別のインターフェースを使用するワークフローを定義するように構成され得る。ワークフロー設計ソフトウェアアプリケーションは、ワークフローを定義するための第1のアクション及び第2のアクションの選択を受け取るように構成され得る。第2のアクションは、ワークフローにおいて第1のアクションに先行し得る。第1のアクションは、特定のリモートソフトウェアアプリケーションのためのインターフェースの複数のアクションから選択され得る。ワークフロー設計ソフトウェアアプリケーションはまた、第2のアクションの出力変数の第1のアクションの入力変数への割り当てを受け取るように構成され得る。ワークフロー設計ソフトウェアアプリケーションは、(i)第2のアクションの出力変数と(ii)第1のアクションの入力変数との間の接続を生成するように更に構成され得る。第2のアクションの出力変数の値は、ワークフローの実行中に第2のアクションから第1のアクションの入力変数に渡され得る。
幾つかの実施形態では、ワークフロー設計ソフトウェアアプリケーションは、個別のインターフェースを使用するワークフローを定義するように構成され得る。ワークフロー設計ソフトウェアアプリケーションは、ワークフローを定義するための第1のアクション及び第2のアクションの選択を受け取るように構成され得る。第1のアクションは、ワークフローにおいて第2のアクションに先行し得る。第1のアクションは、特定のリモートソフトウェアアプリケーションのためのインターフェースの複数のアクションから選択され得る。ワークフロー設計ソフトウェアアプリケーションはまた、第1のアクションの出力変数の第2のアクションの入力変数への割り当てを受け取るように構成され得る。ワークフロー設計ソフトウェアアプリケーションは、(i)第1のアクションの出力変数と(ii)第2のアクションの入力変数との間の接続を生成するように更に構成され得る。第1のアクションの出力変数の値は、ワークフローの実行中に第1のアクションから第2のアクションの入力変数に渡され得る。
幾つかの実施形態では、ワークフロー設計ソフトウェアアプリケーションは、インターフェースの複数のアクションから第1のアクションの選択を受け取ることによってワークフローを定義するように構成され得る。アクション設計ソフトウェアアプリケーションは、ワークフロー設計ソフトウェアアプリケーションが第1のアクションの選択を受け取ることに基づいて、リモートソフトウェアアプリケーションシステムから、(i)1つ以上のオブジェクト又は(ii)複数の関数に対する1つ以上の更新を表す特定のリモートソフトウェアアプリケーションの更新された仕様を取得するように構成され得る。アクション設計ソフトウェアアプリケーションはまた、第1のアクションのワークフローへの統合前に、更新された仕様に基づいて第1のアクションを更新するように構成され得る。更新された第1のアクションは、ワークフロー設計ソフトウェアアプリケーションによる第1のアクションのワークフローへの統合のために永続ストレージ内に格納され得る。
幾つかの実施形態では、アクション設計ソフトウェアアプリケーションは、リモートソフトウェアアプリケーションシステムから、(i)1つ以上のオブジェクト又は(ii)複数の関数に対する1つ以上の更新を表す特定のリモートソフトウェアアプリケーションの更新された仕様を定期的に取得するように構成され得る。アクション設計ソフトウェアアプリケーションはまた、更新された仕様に基づいて複数のアクションを更新し、更新された複数のアクションを永続ストレージ内に格納するように構成され得る。
幾つかの実施形態では、ワークフロー設計ソフトウェアアプリケーションは、少なくとも2つの異なるリモートソフトウェアアプリケーションの個別のインターフェースを使用するワークフローを定義するように構成され得る。
幾つかの実施形態では、リモートソフトウェアアプリケーションシステムを識別することは、実行のためにリモートソフトウェアアプリケーションの異なるセットを公開するように各々構成された複数の利用可能なリモートソフトウェアアプリケーションシステムを識別することを含み得る。リモートソフトウェアアプリケーションシステムは、管理されるネットワークがリモートソフトウェアアプリケーションシステムに対する1つ以上のサービス識別子を維持することに基づいて、複数の利用可能なリモートソフトウェアアプリケーションシステムから選択され得る。ワークフローは、管理されるネットワークに代わる実行のために定義され得る。
幾つかの実施形態では、1つ以上のオブジェクトは、キー及び値のペアの階層内に配列されたデータ構造を各々含み得る。
幾つかの実施形態では、複数の関数は、1つ以上のオブジェクトを作成すること、1つ以上のオブジェクトを修正すること、又は1つ以上のオブジェクトを削除することによって、1つ以上のオブジェクトと相互作用するように構成され得る。
XI. 結論
本開示は、様々な態様の例証として意図されている、この出願で説明する特定の実施形態に関して限定されるべきではない。当業者には明らかであるように、その範囲から逸脱することなく、多くの修正及び変形がなされ得る。本明細書に説明したものに加えて、開示の範囲内の機能的に同等の方法及び装置は、前述の説明から当業者には明らかであろう。そうした修正及び変形は、添付の特許請求の範囲内にあることが意図されている。
上記の詳細な説明は、添付の図を参照して、開示されたシステム、デバイス、及び方法の様々な機構及び動作を説明している。本明細書及び図で説明した例示的実施形態は、限定することを意味しない。本明細書に提示される主題の範囲から逸脱することなく、他の実施形態が利用され得、他の変更がなされ得る。本明細書に一般的に説明され、図に説明されるような本開示の態様が、多種多様な異なる構成で配置され得、置換され得、組み合され得、分離され得、設計され得ることは容易に理解されるであろう。
図中のメッセージフロー図、シナリオ、及びフローチャートの内の何れか又は全てに関して、本明細書で論じたように、各ステップ、ブロック、及び/又は通信は、例示的実施形態に従った情報の処理及び/又は情報の送信を表し得る。代替的実施形態は、これらの例示的実施形態の範囲内に含まれる。これらの代替的実施形態では、例えば、ステップ、ブロック、送信、通信、リクエスト、応答、及び/又はメッセージとして説明される動作は、関係する機能に依存して、実質的に同時又は逆の順序を含め、示された又は論じられた順序とは異なる順序で実行され得る。更に、より多くの又はより少ないブロック及び/又は動作は、本明細書で論じられるメッセージフロー図、シナリオ、及びフローチャートの内の何れかと共に使用され得、これらのメッセージフロー図、シナリオ、及びフローチャートは、部分的に又は全体的に相互に組み合され得る。
情報の処理を表すステップ又はブロックは、本明細書で説明する方法又は技術の具体的な論理機能を実施するように構成され得る回路に対応し得る。代替的又は追加的に、情報の処理を表すステップ又はブロックは、モジュール、セグメント、又はプログラムコードの一部(関連データを含む)に対応し得る。プログラムコードは、方法又は技術において具体的な論理演算又は活動を実装するためにプロセッサにより実行可能な1つ以上の命令を含み得る。プログラムコード及び/又は関連データは、RAM、ディスクドライブ、ソリッドステートドライブ、又は別のストレージ媒体を含むストレージデバイス等の任意のタイプのコンピュータ可読媒体上に格納され得る。
コンピュータ可読媒体はまた、レジスタメモリ及びプロセッサキャッシュのような短期間にデータを格納するコンピュータ可読媒体等の非一時的コンピュータ可読媒体を含み得る。コンピュータ可読媒体は、プログラムコード及び/又はデータをより長期間格納する非一時的コンピュータ可読媒体を更に含み得る。したがって、コンピュータ可読媒体は、例えば、ROM、光又は磁気ディスク、ソリッドステートドライブ、コンパクトディスクリードオンリーメモリ(CD-ROM)のような二次的又は永続的な長期ストレージを含み得る。コンピュータ可読媒体はまた、その他の任意の揮発性又は不揮発性のストレージシステムであり得る。コンピュータ可読媒体は、例えば、コンピュータ可読ストレージ媒体、又は有形ストレージデバイスとみなされ得る。
更に、1つ以上の情報送信を表すステップ又はブロックは、同じ物理デバイス内のソフトウェア及び/又はハードウェアモジュール間の情報送信に対応し得る。しかしながら、その他の情報送信は、異なる物理デバイス内のソフトウェアモジュール及び/又はハードウェアモジュール間であり得る。
図に示される特定の配置は、限定的とみなされるべきではない。他の実施形態は、所与の図に示される各要素の内の多少を含み得ることを理解すべきである。更に、説明された要素の内の幾つかは、組み合わされ得、又は省略され得る。更に、例示的実施形態は、図に説明されない要素を含み得る。
様々な態様及び実施形態が本明細書に開示されているが、他の態様及び実施形態は当業者には明らかであろう。本明細書に開示される様々な態様及び実施形態は、例証を目的とし、限定することを意図せず、真の範囲は、以下の特許請求の範囲によって示される。