(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-27
(54)【発明の名称】イベントベースのアプリケーションのホスティング
(51)【国際特許分類】
G06F 8/30 20180101AFI20240219BHJP
【FI】
G06F8/30
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023551802
(86)(22)【出願日】2021-09-24
(85)【翻訳文提出日】2023-10-10
(86)【国際出願番号】 US2021052005
(87)【国際公開番号】W WO2022182392
(87)【国際公開日】2022-09-01
(32)【優先日】2021-02-26
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】322001222
【氏名又は名称】スラック テクノロジーズ, エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ブレブールト,マイケル
(72)【発明者】
【氏名】キルヒホフ,アンジェラ
(72)【発明者】
【氏名】チョン,ヘレン,ウェイ
(72)【発明者】
【氏名】アレン,カーティス,ネイル
(72)【発明者】
【氏名】ウッド,スティーヴン
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA07
5B376BC07
5B376BC12
5B376BC13
5B376BC14
5B376BC15
5B376FA19
(57)【要約】
イベントベースのアプリケーションをホスティングするための媒体、方法、及びシステムが開示される。特定のイベントに応答して行われる処理ステップに対応するアプリケーション命令が開発環境から受信される。イベントは、グループベースの通信チャネルに関連付けられている。アプリケーション命令及びイベントに関連付けられたメタデータに基づいて、コンピュータ実行可能命令を含むアプリケーションが生成される。1つ以上のイベントの検出に応答して、コンピュータ実行可能命令の実行がトリガされる。イベントに処理ステップを適用することからの出力に対応する応答が受信される。応答に対応するそれぞれの通信チャネルにメッセージが投稿される。
【特許請求の範囲】
【請求項1】
プロセッサによって実行されたときに、グループベースの通信システムに関連してアプリケーションをホスティングするための方法を行うコンピュータ実行可能命令を格納する、1つ以上の非一時的なコンピュータ可読媒体であって、前記方法が、
複数のイベントに応答して行われる処理ステップに対応する、前記アプリケーションに関連付けられたアプリケーション命令及びアプリケーション構成パラメータを開発環境から受信することと、
前記グループベースの通信システムのグループベースの通信システムチャネル内の前記複数のイベントのうちの1つ以上のイベントの検出に応答して、
前記1つ以上のイベントに関連付けられたメタデータに基づいて、前記コンピュータ実行可能命令の実行をトリガすることと、
前記1つ以上のイベントに応じた応答に基づいてメッセージを前記グループベースの通信システムチャネルに投稿することと、を含む、
1つ以上の非一時的なコンピュータ可読媒体。
【請求項2】
前記複数のイベントのうちの各イベントが、前記グループベースの通信システムのそれぞれのグループベースの通信システムチャネルに関連付けられている、請求項1に記載の非一時的なコンピュータ可読媒体。
【請求項3】
前記アプリケーション命令及び前記アプリケーション構成パラメータに基づいて、コンピュータ実行可能命令を含むアプリケーションコンテナを生成することと、
前記グループベースの通信システムに関連付けられたアプリケーション実行環境に前記アプリケーションコンテナを展開することと、を更に含む、
請求項1に記載の非一時的なコンピュータ可読媒体。
【請求項4】
前記アプリケーション実行環境が、前記グループベースの通信システムとは異なるクラウドベースの環境である、請求項1に記載の非一時的なコンピュータ可読媒体。
【請求項5】
前記1つ以上のイベントに応答して、前記アプリケーション命令に基づいて前記コンピュータ実行可能命令を実行することが、
永続化アプリケーションプログラミングインターフェースを介して、前記アプリケーション実行環境にアクセス可能なデータ永続化サービスにデータを格納すること、を更に含む、
請求項1に記載の非一時的なコンピュータ可読媒体。
【請求項6】
データ永続化サービスにデータを格納することが、データ永続化テーブルの事前定義された部分にデータを格納し、かつ前記グループベースの通信システムの前記グループベースの通信システムチャネルに更なるイベントを生成させることを含む、請求項5に記載の非一時的なコンピュータ可読媒体。
【請求項7】
イベントベースのアプリケーションに関連付けられた管理インターフェースが、前記アプリケーション実行環境へのデータイングレス及びエグレスに関連付けられた許可を定義する、請求項1に記載の非一時的なコンピュータ可読媒体。
【請求項8】
グループベースの通信システムに関連してイベントベースのアプリケーションをホスティングするための方法であって、
複数のイベントに応答して行われる処理ステップに対応する、前記アプリケーションに関連付けられたアプリケーション命令及びアプリケーション構成パラメータを開発環境から受信することと、
前記グループベースの通信システムのグループベースの通信システムチャネル内の前記複数のイベントのうちの1つ以上のイベントの検出に応答して、
前記1つ以上のイベントに関連付けられたメタデータに基づいて、コンピュータ実行可能命令の実行をトリガすることと、
前記1つ以上のイベントに応じた応答に基づいてメッセージを前記グループベースの通信システムチャネルに投稿することと、を含む、方法。
【請求項9】
前記複数のイベントのうちの各イベントが、前記グループベースの通信システムのそれぞれのグループベースの通信システムチャネルに関連付けられている、請求項8に記載の方法。
【請求項10】
前記アプリケーション命令及び前記アプリケーション構成パラメータに基づいて、コンピュータ実行可能命令を含むアプリケーションコンテナを生成することと、
前記グループベースの通信システムに関連付けられたアプリケーション実行環境に前記アプリケーションコンテナを展開することと、を更に含む、請求項8に記載の方法。
【請求項11】
前記アプリケーション実行環境が、前記グループベースの通信システムとは異なるクラウドベースの環境である、請求項8に記載の方法。
【請求項12】
前記1つ以上のイベントに応答して、前記アプリケーション命令に基づいて前記コンピュータ実行可能命令を実行することが、
永続化アプリケーションプログラミングインターフェースを介して、前記アプリケーション実行環境にアクセス可能なデータ永続化サービスにデータを格納することを更に含む、請求項8に記載の方法。
【請求項13】
データ永続化サービスにデータを格納することが、データ永続化テーブルの事前定義された部分にデータを格納し、かつ前記グループベースの通信システムの前記グループベースの通信システムチャネルに更なるイベントを生成させることを含む、請求項8に記載の方法。
【請求項14】
前記イベントベースのアプリケーションに関連付けられた管理インターフェースが、前記アプリケーション実行環境へのデータのイングレス及びエグレスに関連付けられた許可を定義する、請求項13に記載の方法。
【請求項15】
システムであって、少なくとも1つのプロセッサと、コンピュータ実行可能命令を格納する少なくとも1つの非一時的なメモリと、を備え、前記コンピュータ実行可能命令は前記プロセッサによって実行されると、前記システムに、
複数のイベントに応答して行われる処理ステップに対応する、アプリケーションに関連付けられたアプリケーション命令及びアプリケーション構成パラメータを開発環境から受信することと、
グループベースの通信システムのグループベースの通信システムチャネル内の前記複数のイベントのうちの1つ以上のイベントの検出に応答して、
前記1つ以上のイベントに関連付けられたメタデータに基づいて、前記コンピュータ実行可能命令の実行をトリガすることと、
前記1つ以上のイベントに応じた応答に基づいてメッセージを前記グループベースの通信システムチャネルに投稿することと、を含むアクションを実施させる、
システム。
【請求項16】
前記複数のイベントのうちの各イベントが、前記グループベースの通信システムのそれぞれのグループベースの通信システムチャネルに関連付けられている、請求項15に記載のシステム。
【請求項17】
前記アプリケーション命令及び前記アプリケーション構成パラメータに基づいて、コンピュータ実行可能命令を含むアプリケーションコンテナを生成することと、
前記グループベースの通信システムに関連付けられたアプリケーション実行環境に前記アプリケーションコンテナを展開することと、を更に含む、
請求項15に記載のシステム。
【請求項18】
前記アプリケーション実行環境が、前記グループベースの通信システムとは異なるクラウドベースの環境である、請求項15に記載のシステム。
【請求項19】
前記1つ以上のイベントに応答して、前記アプリケーション命令に基づいて前記コンピュータ実行可能命令を実行することが、
永続化アプリケーションプログラミングインターフェースを介して、前記アプリケーション実行環境にアクセス可能なデータ永続化サービスにデータを格納すること、を更に含む、
請求項15に記載のシステム。
【請求項20】
データ永続化サービスにデータを格納することが、データ永続化テーブルの事前定義された部分にデータを格納し、かつ前記グループベースの通信システムの前記グループベースの通信システムチャネルに更なるイベントを生成させること、を含む、請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、イベントベースのアプリケーションをホスティングすることに関する。より具体的には、本発明の実施形態は、グループベースの通信システムに関連して、イベントベースのアプリケーションの展開及びホスティングを可能にすることに関する。
【背景技術】
【0002】
グループベースの通信システムに関連して動作するイベントベースのアプリケーションの開発、展開、及びホスティングには、アプリケーションホスティングに関する相当な量のソフトウェア開発経験及びドメイン固有の知識を伝統的に必要としてきた。そのようなドメイン固有の知識には、グループベースの通信システムのアプリケーションのプログラミングインターフェースの知識、イベントベースのアプリケーションを展開し、ホスティングする方法、及びグループベースの通信システムとイベントベースのアプリケーションが展開されるアプリケーション実行環境との間のネットワーク接続に関連付けられた複雑さが含まれる。結果として、グループベースの通信システムアプリケーションの構築、走行、及び維持には、アプリケーションの展開及びホスティングに関する知識に加えて、グループベースの通信システムの知識を有する経験豊富なソフトウェア開発者が必要となる。この結果、関連する開発プラットフォームへの参入に大きな障壁が生じる。
【0003】
必要なのは、グループベースの通信システムに関連してイベントベースのアプリケーションの展開及びホスティングを可能にするためのユーザフレンドリーなプラットフォームである。そのようなプラットフォームによって、ドメイン固有の知識を有さないユーザが、イベントベースのアプリケーションを展開し、アプリケーション実行環境にホスティングすることが可能になり、それによって上記の参入への障壁が低減される。
【発明の概要】
【0004】
本発明の実施形態は、1つ以上のグループベースの通信システムに関連してイベントベースのアプリケーションを構築、走行、展開、及び維持するためのプラットフォームを提供することによって、上記の認識された問題に対処する。特に、第1の実施形態では、本発明は、プロセッサによって実行されたときに、グループベースの通信システムに関連してアプリケーションをホスティングするための方法を行うコンピュータ実行可能命令を格納する1つ以上の非一時的なコンピュータ可読媒体を含み、その方法は、複数のイベントに応答して行われる処理ステップに対応する、アプリケーションに関連付けられたアプリケーション命令及びアプリケーション構成パラメータを開発環境から受信することと、グループベースの通信システムのそれぞれのグループベースの通信システムチャネル内の複数のイベントのうちの1つ以上のイベントの検出に応答して、1つ以上のイベントに関連付けられたメタデータに基づいて、コンピュータ実行可能命令の実行をトリガすることと、1つ以上のイベントに応じた応答に基づいてメッセージをグループベースの通信システムチャネルに投稿することと、を含む。
【0005】
第2の実施形態では、本発明は、グループベースの通信システムに関連してイベントベースのアプリケーションをホスティングするための方法を含む。その方法は、複数のイベントに応答して行われる処理ステップに対応する、アプリケーションに関連付けられたアプリケーション命令及びアプリケーション構成パラメータを開発環境から受信することと、グループベースの通信システムのグループベースの通信システムチャネル内の複数のイベントのうちの1つ以上のイベントの検出に応答して、1つ以上のイベントに関連付けられたメタデータに基づいて、コンピュータ実行可能命令の実行をトリガすることと、1つ以上のイベントに応じた応答に基づいてメッセージをグループベースの通信システムチャネルに投稿することと、を含む。
【0006】
第3の実施形態では、本発明は、少なくとも1つのプロセッサと、コンピュータ実行可能命令を格納する少なくとも1つの非一時的なメモリと、を備えたシステムを含み、コンピュータ実行可能命令はプロセッサによって実行されると、システムに、複数のイベントに応答して行われる処理ステップに対応する、アプリケーションに関連付けられたアプリケーション命令及びアプリケーション構成パラメータを開発環境から受信することと、グループベースの通信システムのグループベースの通信システムチャネル内の複数のイベントのうちの1つ以上のイベントの検出に応答して、1つ以上のイベントに関連付けられたメタデータに基づいて、コンピュータ実行可能命令の実行をトリガすることと、1つ以上のイベントに応じた応答に基づいてメッセージをグループベースの通信システムチャネルに投稿することと、を含むアクションを実施させる。
【0007】
本要約は、以下の詳細な説明で更に説明される概念の選択を、簡素化された形態で導入するために提供される。本要約は、特許請求された主題の主要な特徴又は本質的な特徴を特定することを意図するものではなく、また、特許請求された主題の範囲を限定するために使用されることを意図するものでもない。本発明の他の態様及び利点は、以下の実施形態の詳細な説明及び添付の図面から明らかになるであろう。
【図面の簡単な説明】
【0008】
本発明の実施形態を、添付の図面を参照して以下に詳細に説明する。
【0009】
【
図1】本発明のある特定の実施形態の例示的なハードウェアプラットフォームを示す。
【
図2】本発明の実施形態を実施するためのシステムの構成要素を示す。
【
図3】本発明の実施形態を実施するためのブロック図を示す。
【
図4】本発明のある特定の実施形態におけるワークフローステップを追加するためのユーザインターフェースの構成要素を示す。
【
図5A】本発明のある特定の実施形態における関数への引数を構成するためのユーザインターフェースの構成要素を示す。
【
図5B】本発明のある特定の実施形態における関数への引数に関連付けられた変数を挿入するためのユーザインターフェースの構成要素を示す。
【
図6】本発明の実施形態を実施するためのデータフロー図を示す。
【
図7】本発明の一実施形態による方法の動作を例示するための例示的なフローチャートを示す。
【0010】
これらの図面は、本発明を、本明細書に開示及び記載された特定の実施形態に限定するものではない。図面は必ずしも縮尺通りではなく、代わりに本発明の原理を明確に示すことに重点が置かれる。
【発明を実施するための形態】
【0011】
(発明の背景及び概念)
本明細書で使用される「グループベースの通信システム」という用語は、組織内で使用される共同通信システムを指す。いくつかの実施形態では、グループベースの通信システムは、チャネルベースのメッセージングプラットフォームである。グループベースの通信システム内では、それぞれが特定のトピック又はセットのユーザに専用の「チャネル」に通信が編成され得る。一般に、チャネルは、特定のトピックに関する長期的で、かつ持続的なディスカッションである。特定のチャネルのメンバーは、そのチャネル内の他のメンバーに表示されるメッセージを、そのチャネル内の他のメッセージとともに投稿することができる。ユーザは、異なるトピックに関する他のチャネルに投稿されたメッセージを見ることなく、そのチャネルのトピックに関係するメッセージのみを見るために、閲覧するチャネルを選択してよい。例えば、ソフトウェア開発会社では、開発中のソフトウェア製品ごとに異なるチャネルを有してよく、特定のプロジェクトに携わる開発者が、他のプロジェクトに携わる開発者の手を煩わせることなく(あるいは煩わされることなく)会話することができる。チャネルは一般に永続的であり、特定のトピック又はグループに向けられているため、ユーザは参照のために以前の通信をすばやく簡単に参照することができる。
【0012】
グループベースの通信システム内の通信データは、メッセージ、クエリ、ファイル(例えば、ドキュメント、スプレッドシート、コンピュータコード、画像、ビデオ、音声、及び/又は電子連絡先情報)、メンション、ユーザ若しくはユーザプロファイル、インタラクション(例えば、リアクション、編集、削除、及び/又はピン留め若しくはスター付けによるなどの優先順位付け)、チケット、チャネル、1つ以上のチャネルに統合されたアプリケーション、会話(例えば、単一のユニットとしてセグメント化されたメッセージのグループ)、ワークスペース(例えば、独自のセットの許可を有してもよく、いくつかの例では、組織図に沿って実質的に編成されてもよい、組織内のチャネルのセット、ユーザ、プロジェクト、タスク)、又はグループベースの通信システムを使用する組織の通信データに関連付けられた、グループベースの通信システムのユーザによって生成される又はユーザ間で共有される他のデータを含んでもよい。
【0013】
いくつかの例では、通信データは、ユーザ識別子、ユーザがアクセスを許可された通信チャネルに関連付けられた1つ以上の通信チャネル識別子、ユーザが関連付けられているグループ(又は組織、チーム、エンティティなど)の1つ以上のグループ識別子、ユーザが任意の通信チャネルの所有者又は管理者であるかどうかの指示、ユーザが任意の通信チャネル制限を有するかどうかの指示、複数のメッセージ、複数の絵文字、複数の会話、複数の会話トピック、アバター、電子メールアドレス、実名(例えば、Austin Author)、ユーザ名(例えば、austin_a)、パスワード、ユーザプレファレンス及び/又は設定、タイムゾーン、ステータス、トークン、及び他のユーザ固有の情報を含むが、これらに限定されない、ユーザに関連付けられたデータを含んでよい。いくつかの実施形態では、グループベースの通信システムは、追加的又は代替的に、グループベースの通信システムの個々のユーザの許可に関連付けられた許可データを格納してよい。いくつかの実施形態では、個々のユーザに関連付けられた許可は、ユーザデータに関連付けられたアカウント又はプロファイルにマッピングされ得る、又はそうでなければ関連付けられ得る。許可は、どのユーザが他のユーザと直接通信できるか、ユーザがアクセスを許可されているチャネル、個々のチャネルの制限、ユーザがアクセスを許可されているワークスペース、個々のワークスペースの制限などを示すことができる。いくつかの実施形態では、許可は、定義されたユーザグループへのアクセスを制限するためのセキュリティを維持することによって、グループベースの通信システムをサポートすることができる。いくつかのそのような実施形態では、上記のように、共通のアクセス認証情報、グループ識別子、又は他の基準によってそのようなユーザが定義されてもよい。
【0014】
いくつかの実施形態では、グループベースの通信システムは、異なるワークスペースに分割され得、これは、異なるグループのユーザに関連付けられ得る。各ワークスペースは、グループ識別子に関連付け得、1つ以上のユーザ識別子がグループ識別子にマッピングされ得るか、又はそうでなければグループ識別子に関連付けられ得る。そのようなユーザ識別子に対応するユーザは、グループの「メンバー」と呼ばれてもよい。ワークスペースは、そのワークスペースに固有の1つ以上のチャネル、及び/又は1つ以上のワークスペース間で共有される1つ以上のチャネルを含んでよい。いくつかの実施形態では、ワークスペースが1つ以上の組織識別子に関連付けられ得、それらは、グループベースの通信システムに関連付けられた組織又は他のエンティティに関連付けられ得る。いくつかの実施形態では、そのようなデータは、他のタイプのデータ(例えば、ユーザデータ、許可データ、又はチャネルデータ)にマッピングされてもよく、又はそうでなければ他のタイプのデータに関連付けられてもよい。
【0015】
グループベースの通信システムの機能を拡張するために、グループベースの通信システム機能を外部プラットフォームと統合するようにイベントベースのアプリケーションが開発される。いくつかの実施形態では、イベント駆動型アプリケーション開発及びホスティングプラットフォームが提供される。アプリケーション開発者は、グループベースの通信システムに関連してアプリケーションを構築及びホスティングするためのコードを記述する。いくつかの実施形態では、開発者がクラウドベースのイベント駆動型アプリケーションを迅速に作成するためのコマンドラインインターフェースが提供され、次いで、クラウドベースのイベント駆動型アプリケーションがグループベースの通信システムに関連付けられたアプリケーション実行環境に展開される。
【0016】
いくつかの実施形態では、イベント駆動型アプリケーション開発及びホスティングプラットフォームをワークフロー構築ユーザインターフェースと関連して利用して、プログラムコードを記述する必要なしにイベントベースのアプリケーションを構築することができる。そのような実施形態では、イベントベースのアプリケーションは、ワークフローを理解するが、訓練を受けていない、又はそうでなければコードの記述を望まないユーザによって構築され得る。他の実施形態では、イベント駆動型アプリケーション開発及びホスティングプラットフォームの態様は、訓練されたソフトウェア開発者に提供され、そのソフトウェア開発者は、アプリケーションロジックを実装するためのコードを記述することによってイベントベースのアプリケーションを実装する。
【0017】
いくつかの実施形態では、1セットのアプリケーション開発ツールがコマンドラインインターフェース(CLI)の形態で提供される。このCLIは、アプリケーション開発プラットフォームに対して開発者のIDを認証する機能を提供する。一実施形態では、開発者は、「whoami」パラメータを用いてCLIを呼び出して、開発者が以前に認証されたかどうかを判定する。開発者が特定のユーザとして事前に認証されている場合、「whoami」パラメータを持つCLIは、すでに認証されているユーザ名を返す。開発者が以前に認証されていない場合、CLIは、CLIセッションが認証されていない旨のエラーメッセージを提供してもよい。
【0018】
次いで、開発者は、「login」パラメータでCLIを呼び出して認証情報を提供するか、又は、「logout」パラメータを呼び出してCLIセッションからログアウトすることができる。この実施形態では、開発者が「ログイン」パラメータでCLIを呼び出すと、CLIは、グループベースの通信システムの認証されたセッションで実行されるようにカットアンドペーストされ得るコマンドを生成する。生成されたコマンドはチケットを含み、そのチケットは、数分間のみ有効な16進数の文字列で表される一意の乱数が含んでいる。開発者が生成されたコマンドをグループベースの通信システムの認証されたクライアントインターフェースにペーストすると、展開並びに実行の両方のためにホスティングされたアプリケーションを認証するために使用される認証トークンが生成される。
【0019】
開発者が認証されると、開発者はプロジェクトを最初から構築したり、ソースコードリポジトリからプロジェクトをチェックアウトさせたり、又はCLIを使用して事前定義されたプロジェクトスケルトンを作成したりすることができる。事前定義されたプロジェクトスケルトンは、開発者が構築する必要がある可能性のある様々なタイプ又はカテゴリのアプリケーションのパターンに基づく。いくつかの実施形態では、一組の事前定義されたプロジェクトスケルトンは、アプリケーション開発プラットフォームのプロバイダによってCLIを介して利用可能にされる。開発者は、CLIを介してコマンドを開始して、開発者が構築しようとしているアプリの一般的なタイプに対応するスケルトンアプリを構築することができる。そこから、開発者はスケルトンアプリを編集及び拡張して、開発者が作業しているアプリケーションの要件で指定された特定の機能を構築することができる。
【0020】
一実施形態では、新規の空のプロジェクトを初期化するために、開発者は、「新規」パラメータでCLIを呼び出す。これにより、最小限の初期化された構成ファイルと、いくつかの実施形態ではコメントアウトされているサンプルコードを含むソースコードファイルとのセットを有する最も基本的なアプリケーションフレームワークが作成される。いくつかの実施形態では、開発環境はNode.jsであり、構成ファイルは、YAMLなどの人間が読めるデータシリアライズ言語フォーマットで提供される。いくつかの他の実施形態では、Python又はGolangなどの代替プログラミング言語が提供される。
【0021】
開発者が構成ファイルを編集し、ソースコードファイルにコードを追加及び/又は更新すると、開発者はイベントベースのアプリケーションホスティング環境にアプリケーションを展開及び走行させることができる。いくつかの実施形態では、開発者は、CLIパラメータ「deploy」でCLIを呼び出し、ホスティング環境に関連付けられたアプリケーション実行環境にアプリケーションを展開する。いくつかの実施形態では、開発者は、パラメータ「activity」でCLIを呼び出すことによって、CLIに関連付けられたログを表示してよい。いくつかの実施形態では、ログの時系列で最新の部分は、CLIパラメータ「activity--tail」に関連して見ることができる。アプリケーション機能は、展開されると、アプリケーションが展開された走行時間環境に関連付けられたグループベースの通信システムに対応するグループベースの通信システムユーザインターフェースで動作可能である。いくつかの実施形態では、アプリケーションは、CLIパラメータ「delete」を使用して、実行環境から展開解除又は削除することができる。この実施形態では、パラメータ「delete」は、開発者の開発環境から構成及びソースコードを削除するのではなく、むしろアプリケーション実行環境から展開を解除する。
【0022】
そのような展開されたアプリケーションは、グループベースの通信システムアプリケーション関数を実装することも、他の展開されたアプリケーションに関連付けられたグループベースの通信システムアプリケーション関数を呼び出すこともできる。いくつかの実施形態では、そのようなアプリケーション関数は、再利用することができるアプリケーションロジックのアトミックな部分である。大まかに言えば、関数は、入力、出力を定義し、入力から出力を生成するためのアプリケーションロジックを含む。場合によっては、関数は、出力を生成することに加えて、ある特定の指定された機能(「副作用」とも呼ばれる)を更に行う。例えば、関数post_message()は、メッセージ、チャネル識別子、及びユーザ識別子を含む入力を有してよい。関数アプリケーションロジックは、メッセージが正常に投稿されたかどうかを示す「success」及び「failure」の戻り値において、示されたチャネルにおいて、示されたユーザに起因する、提供されたメッセージを投稿する副作用を有する。
【0023】
一般に、関数は入力を受信し、これらの入力に応答して、エラー又は出力のいずれかを生成する。入力は、関数の1つ以上の引数のいずれか、関数の名前、及び関数を実施するために使用される他の適切な情報を含んでよい。エラーは、関数の障害に応答して生成されてよい。例えば、必須の引数が入力内に提供されていない場合、関数は失敗してエラーを生成してよい。エラーは、グループベースの通信システムサーバに戻され、グループベースの通信システムに関連付けられたクライアントデバイス上にエラーメッセージとして表示されてよい。代替的に、関数の成功した実行に応答して関数によって出力が生成されてよい。いくつかの実施形態では、出力(及び/又はエラー)が、グループベースの通信システムのイベントチャネル上で成功イベント(又はエラーの場合には失敗イベント)を生成してもよく、ユーザ又は自動化された処理が結果を得ることが可能になる。以下で説明するように、これにより、また、イベントチャネル上のイベントを別の関数のトリガ条件として機能させることによって関数を構成することが可能になる。
【0024】
代替的に、又は追加的に、いくつかの例では、出力又はエラーのいずれかが後続の関数にその後続の関数の入力引数として直接送信されてよい。いくつかの実施形態では、入力が関数への引数として受信されてもよい。更に、入力は、メッセージ又はイベント情報として、グループベースの通信システムから受信されてもよい。いくつかの実施形態では、データのアンダーカレントは、グループベースの通信システムの特定のチャネルに関連付けられ得る。データのアンダーカレントは、例えば、チャネル内に投稿されたメッセージのメタデータ、チャネルに追加されたユーザに関連付けられたユーザ情報、及びチャネル名及びチャネルパラメータなどのチャネル情報など、グループベースの通信チャネルに関連付けられた様々な情報を含む。したがって、データのアンダーカレントからの情報のいずれかは、関数の引数として送信され得る。例えば、ユーザ名及びメッセージの時刻は、どのユーザがメッセージを送信したか、及びメッセージが送信された時刻を示す関数の引数として使用され得る。例えば、チャネル内にメッセージを投稿する最後のユーザを識別する関数が企図される。
【0025】
いくつかの実施形態では、関数のためにグループベースの通信チャネルに関連付けられた既存のリソースを利用することが望ましい場合がある。例えば、アクセス制御、データスコーピング、サブスクリプション、アプリケーションプログラミングインターフェース(API)、データ損失防止統合、暗号化鍵管理、及び国際データ常駐統合などのチャネル関連情報及び特徴は、関数によって呼び出されて、関数を開始するための引数又はトリガイベントを提供してよい。したがって、既存のグループベースの通信チャネルは、関数のイベントチャネルとして使用され得、チャネル内のイベントは、例えば、メッセージの送信、ユーザの追加、又はメッセージへの反応などの関数をトリガし得る。いくつかの実施形態では、グループベースの通信チャネルに公開された任意のコンテンツは、関数に引数をトリガ及び供給するために使用され得る。
【0026】
いくつかの実施形態では、イベントは、グループベースの通信システムのチャネル内でイベントメッセージとして公開され、各イベントメッセージは、イベントを記載するメタデータを含む。したがって、関数は、チャネル内のイベントに基づいて、並びにイベントメッセージが反応又はコメントされるときにトリガされることができる。そのようないくつかの実施形態では、イベントメッセージに関連付けられたメタデータが、関数に情報を開始及び供給するために使用され得るように、イベントメッセージを公開することが望ましい場合がある。代替的に、いくつかの実施形態では、チャネル内のイベントメッセージとして全てのイベントを公開することは望ましくない場合があり、そうすることでユーザは、過剰な不要な情報を受信するおそれがある。したがって、イベントメッセージは、ある特定のタイプのイベントのみがイベントメッセージとして公開されるようにフィルタリングされ得る。代替的に、イベントメッセージは、チャネル内でユーザに見えることなく、チャネルのためのデータのアンダーカレントに公開され得る。
【0027】
いくつかの実施形態では、関数は、オブジェクト指向プログラミング環境内のオブジェクトなど、グループベースの通信システムのコンテキスト内のオブジェクトである。したがって、関数は、グループベースの通信システムデータストアなどのメモリ内に格納され、機能を識別するために使用される識別子に関連付けられてよい。更に、いくつかの実施形態では、関数は、グループベースの通信システム又は外部アプリケーションのいずれかによって認証されてよい。いくつかの実施形態では、関数は、グループベースの通信システムの各々、及び外部アプリケーションの認証要件を満たす1つの認証ステップで認証されてもよい。更に、関数は、その関数を開始したユーザとともに認証されてもよい。したがって、ユーザがグループベースの通信システムによって認証され、ユーザが関連する外部アプリケーションによって認証される更なるアクションを行う必要がない実施形態が企図される。ここで、ユーザ認証に関する情報は、例えば、ベアラートークンを介して、関数の引数として送信されてもよい。したがって、ユーザがグループベースの通信システム内で認証されている場合、ユーザは、外部アプリケーションに関連して関数を走行できる。組み込み関数は、グループベースの通信システムのコア機能の拡張であり、グループベースの通信システムのコアAPIへの標準インターフェースである。
【0028】
いくつかの実施形態では、グループベースの通信システムのユーザがコードを記述することなくイベントベースのアプリケーションを構築及び拡張できるように、ワークフロービルダーユーザインターフェースが提供される。ワークフロービルダーユーザインターフェースを使用して、グループベースの通信システムの自動化されたワークフローに処理を自動化することができる。ワークフローは、任意の複雑さを伴う場合があり、サードパーティのアプリケーション及びサービスと統合される場合がある。ワークフローのコンテキストでは、トリガは、ワークフローを開始するものである。トリガは、事前に指定された条件に一致するグループベースの通信システム内の任意のイベントに応答して自動的に生成されてよい。例えば、グループベースの通信システムのユーザが、選択されたときにワークフローを起動するショートカットメニューと対話することによって、トリガが手動で開始されてもよい。いくつかの実施形態では、ショートカットメニューは、グループベースの通信システムチャネルのメニューからアクセスされてよい。
【0029】
ワークフローがワークフローステップを組み込んでいる場合がある。ワークフローステップは、グループベースの通信システムメッセージを送信する、又はカスタムフォームユーザインターフェースの構成要素をグループベースの通信システムのユーザに提示させるなどのアクションを行う実行のユニットである。ワークフローステップに対応する実行ロジックは、グループベースの通信システムアプリケーション内から公開されて、(例えば、APIを介して)特定のワークフローを外部システムに統合させてよい。ワークフローを構築するユーザがステップを挿入するときに、ワークフロー構築ユーザは、ワークフローのエンドユーザによって入力された情報を渡すように1つ以上のパラメータを構成してよい。ワークフロー構築ユーザは、構成モーダルダイアログボックスを採用して、ワークフロー内でそのような動作を構成してよい。構成モーダルダイアログボックスは、一連のフィールドを含む。構成モーダルダイアログボックスの各フィールドによって、ワークフロー構築ユーザは、ワークフローが入力として消費する入力データのソースを定義することができる。いくつかの実施形態では、ワークフロー構築ユーザは、二重括弧「{{variables}}」で囲まれた変数をプレーンテキストフィールドに挿入して、以前のワークフローステップからの出力データを自動入力してよい。
【0030】
いくつかの実施形態では、本発明と一致するイベントベースのアプリケーションに関連してデータを永続化するために、行ベース及び列ベースのオブジェクトが提供される。これらの実施形態では、永続化されたデータに対応するデータ辞書に関連付けられたメタデータは、イベントベースのアプリケーションの構成ファイルに提供され得る。例示的な実施形態では、テーブル名と、それに続いて、列名及び列の各々に対応する標準データタイプを有する列のリストとがYAML構成ファイルに提供される。いくつかの実施形態では、標準データタイプは、(i)持続データ内の特定の行を一意に表す文字列であるタイプ「id」と、(ii)任意の長さのUTF-8エンコードされた文字列に対応するタイプ「text」と、(iii)グループベースの通信システムのユーザに対応する一意に定義されたユーザ識別子に対応するタイプ「user」と、(iv)グループベースの通信システムのチャネルに対応するタイプ「channel」と、(v)ISO8601フォーマットされた文字列の形式をとるタイプ「date」と、(vi)整数又は浮動小数に対応するタイプ「number」と、を含む。
【0031】
いくつかの実施形態では、アプリケーション開発プラットフォームによって提供された初期スケルトンアプリケーションに提供されたコードに関連して提供されたAPIへのAPI呼び出しを行うことによって、データ永続化サービスに関連してデータが永続化及びクエリされ得る。データ永続性APIは、いくつかの実施形態では、接頭辞「apps.hosted.tables」を有する、以下に説明される方法を含んでもよい。「putRow」という名前の1つの方法は、テーブル名及び列名の値へのオブジェクトマッピングを提供するときに、行を作成又は更新するために呼び出されてよい。提供されたオブジェクトマッピング内の「id」に対応する「id」値を有する行が存在しない場合、新規の行が作成されてもよい。対応する「id」値を有する行がすでに永続的記憶装置内に存在する場合、その「id」を有する行は、オブジェクトマッピングの残りの部分に含まれる値に従って更新される。
【0032】
別の方法「getRow」は、テーブル名及び取得されるべき行に対応する「id」が与えられたときに単一の行を取得するために呼び出されてもよい。提供され得る更に別の方法は、「deleteRow」であり、テーブル名及び行「id」を与えられた単一の行を削除する。更に別の方法は、「クエリ」であり、これは、特定のテーブルをクエリし、ある特定の数の行を返すために呼び出され得る。クエリ表現は、SQL又はNoSQLタイプのデータベースをクエリするために使用され得るクエリ用語など、データベースをクエリするために使用され得る任意の種類のクエリ用語であってよい。いくつかの実施形態では、上記の方法で保持されているデータと対話し、データを管理するためのユーザインターフェースの構成要素が存在する。
【0033】
ユーザ及び組織の様々なカテゴリは、いくつかの方法で、例示的なイベント駆動型アプリケーション及び関連するアプリケーション開発、展開、及びホスティング環境と対話する。様々なタイプのユーザ及び組織は、(i)グループベースの通信システムのエンドユーザと、(ii)グループベースの通信システムに関連付けられ、事前に構築されたワークフローを使用するワークフローユーザと、(iii)グループベースの通信システム内で自動化された機能を行うためにワークフローを構築するワークフロー構築ユーザと、(iv)グループベースの通信システムの関数をカスタマイズし、関連付けられたトリガを構成するユーザと、(v)サブスクライブする組織によって要求される自動化をサポートするためにグループベースの通信システム機能を介してイベントベースのアプリケーションを開発するグループベースの構成システムのサブスクライブ組織と、(vi)グループベースの通信システムに関連して動作するイベントベースのアプリケーション及び統合を開発するパートナー組織と、を含むが、これらに限定されない。
【0034】
非限定的な例として、グループベースの通信システムを使用する過程でのグループベースの通信システムのエンドユーザは、対話性を備えたグループベースの通信システムチャネルを使用して、特定の製品に関するフィードバックを提供してよい。そうすることで、エンドユーザは、他のエンドユーザ及び他の製品にも同様のフィードバックの流れを作りたいと考えるようになる。グループベースの通信システムを使用して、エンドユーザは、同一の又は類似のワークフローをコピー又は使用する方法を探す。この能力では、エンドユーザがワークフローユーザになり、既存のワークフローをカスタマイズすることを望む。グループベースの通信システムのクライアントインターフェース内で、ワークフローユーザとなったエンドユーザは、既存のワークフローをカスタマイズする処理を開始する。ワークフローユーザは、既存のワークフローに基づいてソリューションを追加し、新規のソリューションをカスタマイズする。次いで、ワークフローユーザは、カスタマイズされたソリューションを特定のグループベースの通信システムチャネルに追加してもよい。次に、ワークフローユーザは、チャネル内にメッセージを送信して、チャネルメンバーに新規のソリューションについて知らせてもよい。チャネルメンバーは、新規のソリューションに関するコメントを提供してもよく、それらのコメントに基づいて、ワークフローユーザは、例えば、ソリューションに関連付けられたフィードバックフォームの質問を更新することによって、ワークフローソリューション構成を更新してもよい。
【0035】
別の例では、グループベースの通信システムを使用している間、ワークフローユーザは、ワークフローユーザのチームが契約をレビューする方法を有するための要件を直接有していてもよい。この例では、ワークフローユーザは、利用可能なワークフローを参照して、既存のワークフローをチームが契約をレビューするために使用できるように構成できるかどうかを決定し得る。既存のワークフローがこれを可能にするように単純に構成することができる場合、ワークフローユーザは、上記のようにソリューションを構成及び追加してよい。代替的に、契約のレビューのニーズを満たすために既存のワークフローが存在しないとワークフローユーザが判断してもよい。この時点で、ワークフローユーザが適切なワークフローを構築することを決定してよく、ワークフローユーザがワークフロー構築ユーザのロールを引き受ける。この場合、ワークフロー構築ユーザはワークフロービルダーのユーザインターフェースを開き、新規のワークフローを作成する処理を開始する。いくつかの実施形態では、全てのユーザが新規のワークフローを作成するための権限を有するわけではなく、グループベースの通信システムの管理ユーザは、新規のワークフローを作成するためにワークフロー構築ユーザに許可を付与する必要があり得る。
【0036】
ワーク構築ユーザがワークフロービルダーで新規のワークフローを作成する処理を開始すると、ワークフロー構築ユーザはワークフローテンプレートを参照して、新規のワークフローを構築するための基礎として使用する既存のワークフローテンプレートが存在するかどうかを判断してよい。テンプレートが存在する場合、ワークフロー構築ユーザはテンプレートを開き、ワークフローのステップを追加、変更、又は削除し、必要な入力を定義してよい。テンプレートが存在しない場合、ワークフロー構築ユーザは、必要に応じてワークフローステップを追加し、必要な入力を定義することで、ワークフローを一から構築することを選択してよい。いずれの場合も、ワークフロー構築ユーザは、ワークフローを走行させ、一連のテスト入力に基づいて実行を観察することによって、新規に作成されたワークフローをテストする必要がある。最後に、管理構成に応じて、使用するグループベースの通信システムの一部又は全てのユーザのためにワークフローを公開することをワークフロー構築ユーザが選択してよい。
【0037】
第3の例として、グループベースの通信システムのパワーユーザは、サポートされている技術プラットフォームでのエラー率がある特定のエラー率閾値を超える場合、サポートチケット追跡システムで技術サポートインシデントを開始する必要に遭遇する場合がある。パワーユーザのための1つの選択肢は、パワーユーザが利用可能なワークフローを参照し、そのような解決策がグループベースの通信システムにすでに存在する場合、解決策を追加することである。上述したように、これは、単にワークフローユーザとしてワークフローをカスタマイズすることを含み得るか、又は、ワークフローをゼロから、又はワークフローテンプレートに基づいて構築することを含み得る。そのようなワークフロー機能が存在しない場合、パワーユーザは、新規のイベントベースのアプリケーションを実装するためにコードを記述する必要があると判断してよい。
【0038】
この場合、パワーユーザは、ワークフローブラウザ又は関数ブラウザ又は機能記述文書の他のソースのいずれかで、グループベースの通信システム機能を閲覧する。関数記述文書は、コードを記述するソフトウェア開発者として機能するパワーユーザが、グループベースの通信システム機能にアクセスするためのソフトウェアコードを記述できるように、機能の名前及び入出力の記述を提供する必要がある。いくつかの実施形態では、グループベースの通信システムに関連付けられた関数ブラウザユーザインターフェースを使用して、パワーユーザは、パワーユーザの要件と一致する技術サポートインシデントを開始するために必要な機能を提供するように見える「Start Incident」と題された機能を識別する。いくつかの実施形態では、関数ブラウザユーザインターフェースを使用して、パワーユーザが、識別された機能を使用してアプリケーションを構築するための許可を要求することを可能にするオプションを選択する。この実施形態では、管理ユーザは、要求をレビューし、そのようなアプリケーションを構築するためのパワーユーザの許可を付与するかどうかを判断する。
【0039】
アプリケーションを構築する許可が得られた場合、パワーユーザは開発者のロールを引き受け、アプリケーション開発環境内で、上記のようなCLIを使用して新規のアプリケーションスケルトンを初期化する。次に、開発者は、既存のトリガがレバレッジされ得るかどうかを判定する。既存のトリガが適切でない場合、開発者は新規のトリガを作成する。サポートされている技術プラットフォームのエラー率がある特定のエラー率閾値を超えたときにサポートインシデントを開始する例では、トリガは、事前定義されたエラー率を超えるエラー率の発生であり得る。次に、開発者はアプリケーションを構成し、関数を呼び出すために必要なコードを書き込む。いくつかの実施形態では、開発者は、コードを反復的に書き込み、開発環境内でアプリケーションをローカルに任意選択でテストする。開発者がホスティングされたアプリケーション実行環境でアプリケーションをテストする準備ができたら、開発者はCLIを使用してアプリケーションをアプリケーション実行環境に展開してよい。アプリケーションが展開されると、開発者は、トリガを展開されたアプリケーション内の関数に接続する関連付けられたワークフローを作成してよい。次に、開発者は、関連付けられたトリガを構成してよい(例えば、エラー閾値を設定する)。この例では、アプリケーションが有効になり、エラーが設定されたしきい値を超えるときに、サポートインシデントが自動的に開始される。
【0040】
グループベースの通信システムを使用する組織内では、異なるタイプのインシデントを管理する要件が発生する可能性がある。例えば、物理的なセキュリティ、緊急事態、エンジニアリングサポートの問題、及び変更要求は全て、別々に管理されるインシデントであってよい。組織ユーザは、組織が使用するインシデント管理システム(又はインシデント管理システム)との統合を提供する第三者から利用可能な関数があるかどうかを判断するために、サードパーティのパートナーからグループベースの通信システムのオペレータまで利用可能な関数を検索してよい。場合によっては、既存のアプリケーションが公開されたアプリケーションディレクトリに存在する。この場合、組織ユーザは、関数及び公開されたアプリケーションによって公開された関数に関する他の公開されたドキュメントを参照できる。組織ユーザは、新規のアプリケーションを開始するために、又はそうでなければワークフローを作成し、上記のようにトリガを構成するために、必要なアクセス許可を取得する必要があり得る。この場合、許可が与えられると、組織ユーザは、組織の要件に従って、インシデント管理システムと統合するためにサードパーティ発行アプリケーションを使用するようにグループベースの通信システムを構成することができる。
【0041】
一方、適切なサードパーティパートナー統合が存在しない場合、開発者はインテグレーションを直接実装することを選択してよい。この例では、開発者は、統合を実施するための新規の関数を実装するアプリケーションを構築するための管理者許可を要求する。この実施形態では、管理ユーザは、要求をレビューし、指定された関数を実装するそのようなアプリケーションを構築するための開発者許可を付与するかどうかを判定する。
【0042】
アプリケーションを構築する許可が得られた場合、アプリケーション開発環境内で、開発者は、上記のようなCLIを使用して、新規のアプリケーションスケルトンを初期化する。次に、この例では、開発者は、通知を受けるユーザがインシデント又はインシデントのタイムアウトを確認するまで、通知を受けるユーザに連絡する「アラートユーザ」関数を作成する。この例では、開発者は「Start Incident」関数も作成する。次に、開発者は新規の構成可能なトリガを作成し、ホスティングされたアプリケーション実行環境にアプリケーションを展開する。いくつかの実施形態では、開発者は、開発されたグループベースの通信システムの関数を、開発者の組織内で再利用可能である(適切な許可を与えられる)ように構成してよい。
【0043】
最後に、グループベースの通信システムのオペレータのサードパーティパートナーは、グループベースの通信システムのユーザの既存のユーザベースによるパートナーのプラットフォームの採用を推進することを望む場合がある。そのようなプラットフォームの採用を促進するために、パートナーは、グループベースの通信システムのオペレータによってホスティングされるイベントベースのアプリケーションを開発及び維持することを選択してよい。パートナーは、グループベースの通信システムのクライアントインターフェースから、パートナーのプラットフォームを利用するためのその顧客からの要求を受信してよい。例えば、インシデント管理システムのプロバイダであるパートナーの場合、パートナーは、その顧客がグループベースの通信システムのクライアントインターフェースからインシデントをトリガ、エスカレーション、及び解決したいという要件を有し得る。
【0044】
この例では、パートナー開発者は、パートナーのアプリケーション及び/又はプラットフォームとの統合を提供するための公式のパートナーブランドアプリケーションであるアプリケーションを作成する。パートナーユーザは、グループベースの通信システムをパートナーのアプリケーション及び/又はプラットフォームに認証するための構成ステップを作成する。次に、パートナー開発者は、特定のグループベースの通信チャネルを、この例では、サポートインシデントについて通知されるユーザのグループなどのアプリケーションの構成要素にマッピングするための構成ステップを作成する。次に、パートナー開発者は、例えば、パートナーのアプリケーション及び/又はプラットフォームによって公開されたAPIを使用して、パートナーのアプリケーション及び/又はプラットフォームとの統合を実装する統合関数を作成する。いくつかの実施形態では、その関数は、グループベースの通信システムオペレータによってホスティングされる。いくつかの他の実施形態では、統合関数は、例えば、パブリック又はプライベートクラウドプラットフォームに関連して、又はパートナーによって維持されるデータセンター内で、リモートでホスティングされる。いくつかの実施形態では、パートナー開発者は、関数がパブリックで再利用可能であるように構成し、それをパブリック又はプライベートアプリケーションディレクトリに公開する。
【0045】
グループベースの通信システムに関連して走行しているイベントベースのアプリケーションに関連付けられた機密情報へのアクセスを保護するために、豊富なセットの管理機能が有利である。追加のデータアクセス及び他の機能を提供することは、全体的なグループベースの通信システムの複雑さを増加させ、それによって、データセキュリティ及びコンプライアンスに関する潜在的な問題を提起するため、より広範なセットのユーザによって利用され得るホスティングされたアプリケーション及び対応する機能は、潜在的なデータガバナンスの懸念をもたらす。
【0046】
いくつかの実施形態では、グループベースの通信システムの管理ユーザは、グループベースの通信システムに関連してホスティングされるアプリケーションを開発、展開、構成、変更、及び使用することが許可されているユーザのグループに対応するロールを管理することができる。管理ユーザは、特定の組織のグループベースの通信システムに関連して、どのユーザがアプリケーションをホスティングすることができるかを指定してよい。管理ユーザにより、グループ又はユーザのグループが、組織の境界外に移動するデータを懸念ことなく、安全なサンドボックス環境でホスティングされたアプリケーションを開発及び展開することが可能になる。いくつかの実施形態では、サンドボックス環境に関連付けられたテストデータは、ランダムなデータ、又はそうでなければ、個人を特定できる情報又は他の機密情報にサニタイズされ、識別解除されるデータである。管理ユーザは、組織の内部オンプレミスエンタープライズアプリケーションなどのグループベースの通信システムの外部にあるシステム、又は他のサードパーティの外部システムと通信することができるホスティングされたアプリケーションを展開するための「信頼された」ユーザのグループ又はグループに許可を付与することができる。更に、管理ユーザ自身が、アプリケーションホスティング及び/又はアプリケーション開発プラットフォーム管理者であるようにユーザのグループ又は複数のグループを割り当てることができる。
【0047】
データのエグレスを制御するために、管理ユーザは、外部APIを様々な宛先に呼び出す能力を有するアプリケーションを制御できる。これらの宛先は、特定の組織の社内システム、オンプレミスシステム、及び他のサードパーティの外部システムを含む。管理ユーザは、特定の組織のホスティングされたアプリケーションでの使用が許可されているグループベースの通信システムOAuthスコープのリストを指定できる。管理ユーザは、特定の組織のホスティングされた関数及び/又はトリガを外部組織が利用できるようにすることができる場所を制限することができる。管理ユーザは、特定の組織内のどのグループベースの通信システムのワークスペースが特定のホスティングされたアプリケーションにアクセスできるかを制限することができる。いくつかの実施形態では、管理ユーザは、アクセス制御手段が回避されないことを確実にするために、ホスティングされたアプリケーションのアプリケーション構成メタデータ内の必須フィールド及び値を定義してよい。様々なタイプのホスティングされたアプリケーションについて、管理ユーザは、ホスティングされたアプリケーションが展開される前に、特定のホスティングされたアプリケーションが検証を受けるべきかどうかを選択することができる。
【0048】
管理ユーザは、特定の組織がホストしているホスティングされたアプリケーション、関数、及び/若しくはトリガの数及びタイプ、並びに特定のアプリケーション、関数、及び/若しくはトリガへのアクセス権及び権限を有するそれぞれの所有者及び/若しくはコラボレーターを可視化し、監視する能力を有してもよい。管理ユーザは、組織が使用している外部関数及び/又はトリガ、並びに入力、出力、及び状態に関するログデータを監査することができる。管理ユーザは、特定の組織のホスティングされたアプリケーションに対する構成の変更を検出し、監査することができる。管理ユーザは、リソースの消費量を調査し、特定のホスティングされたアプリケーションのホスト費用を把握してよい。管理ユーザは、各ホスティングされたアプリケーション及び/又は関数の使用及び関連付けられたリソース消費を監視してもよい。管理ユーザは、特定の組織のトリガが特定のウェブフックから呼び出されるかどうかを制限することができる。管理ユーザは、特定の組織のアプリケーション、関数、及び/又はトリガが呼び出された外部エンドポイントを監査してよい。管理ユーザは、特定の組織の関数が呼び出したコアグループベースの通信システムAPIエンドポイントを監査してよい。管理ユーザは、ホスティングのロール及び許可の変更を検出し、監査してよい。管理ユーザは、特定のホスティングされたアプリケーションが基づいているソースコード、並びにそれぞれのソースコードコントロールの変更履歴にアクセスしてよい。データガバナンスの原則は、エンタープライズキー管理及び国際データレジデンシーなど、特定の組織のコンプライアンス基準に準拠しているデータストレージの実践に適用される。
【0049】
管理ユーザは、特定のロールをホスティングする開発者に付与してよい。そのようなロールは、特定の開発者が開発者のホスティングされたアプリケーション、関数、及び/又はトリガに組み込むことができる一セットの特徴に対応する。いくつかの実施形態では、管理者ユーザは、新規のホスティング許可ロールを作成し、新規のホスティング権限ロールに対してきめ細かな特徴の可用性を指定してよい。一実施形態では、基本、基本プラスストレージ、及び信頼された、の3つのロールが用意されている。基本的なホスティング許可ロールは、データの保存を許可しない。基本ロール(基本アプリケーション)に割り当てられたアプリケーションは、同一の組織によってホスティングされる組み込みのグループベースの通信システムの関数及びグループベースの通信システムの特徴を呼び出し得る。基本ロールは、外部APIを呼び出すことはできない。基本ロールに割り当てられたアプリケーションに実装及び公開された関数は、グループベースの通信システムワークフロー及び同一の組織によってホスティングされている他のグループベースの通信システムの関数によって呼び出され得る。基本アプリケーション自体は、外部組織が所有するグループベースの通信システムの関数によって呼び出されない場合があり、基本アプリケーションに関連付けられた関数は、基本アプリケーションが実装するウェブフックによって呼び出されない場合がある。基本プラスストレージロールに割り当てられているアプリケーションは、データを格納できることを除いて、基本アプリケーションと同一の特性を有している。信頼されたロール(信頼されたアプリケーション)に割り当てられたアプリケーションは、データを格納して呼び出し、基本アプリケーションと同じように呼び出され得る。更に、信頼されたアプリケーションは、外部APIを呼び出してよい。信頼されたアプリケーションは、(必要な認証及び権限を実装する)外部組織が所有するグループベースの通信システムの関数によって呼び出されてもよい。信頼されたアプリケーションに関連付けられた関数は、信頼されたアプリケーションが実装するウェブフックによって呼び出されてもよい。
【0050】
いくつかの実施形態では、アプリケーション開発環境で構成されたロールベースの権限制約のために、又はその他の実装された組織ルールのために、開発者が権限の付与されていない特徴を有するアプリケーションを展開しようとするときに、エラーが開発者に返され、アプリケーションが展開されないことがある。いくつかの実施形態では、基本アプリケーションは、信頼されたアプリケーションによって公開された関数を呼び出してよい。この実施形態では、基本アプリケーションは、信頼できるアプリケーションが必要とし得るベアラートークンなどの任意の認証資格情報を提供する必要がある。
【0051】
本発明の主題は、法定要件を満たすために以下に詳細に説明されるが、説明自体は、特許請求の範囲を限定することを意図しない。むしろ、特許請求された主題は、他の現在又は将来の技術と併せて、異なるステップ又は本文書に記載されたものと同様のステップの組み合わせを含むように、他の方法で具体化され得る。以下の説明からのわずかな変形は、当業者によって理解され、特許請求される発明の範囲内で捕捉されることが意図される。用語は、個々のステップの順序が明示的に記載されていない限り、記載された様々なステップの特定の順序を暗示するものとして解釈されるべきではない。
【0052】
本発明の実施形態の以下の詳細な説明は、本発明を実施することができる特定の実施形態を示す添付の図面を参照する。これらの実施形態は、当業者が本発明を実施できるよう十分に詳細にわたって本発明の態様を説明することを意図している。本発明の範囲から逸脱することなく、他の実施形態を利用することができ、変更を加えることができる。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではない。本発明の実施形態の範囲は、添付の特許請求の範囲によってのみ定義され、そのような特許請求の範囲が権利を有する均等物の全範囲も含まれる。
【0053】
この説明において、「一実施形態」、「1つの実施形態」又は「複数の実施形態」への言及は、言及される特徴又は複数の特徴が、技術の少なくとも1つの実施形態に含まれることを意味する。この説明における「一実施形態」、「1つの実施形態」又は「複数の実施形態」への別個の言及は、必ずしも同じ実施形態を指すわけではなく、また、そのように記載されていない限り、及び/又は説明から当業者に容易に明らかである場合を除いて、相互に排他的でもない。例えば、一実施形態で説明される特徴、構造、又は動作は、他の実施形態にも含まれ得るが、必ずしも含まれる訳ではない。したがって、本技術は、本明細書に記載される実施形態の様々な組み合わせ及び/又は統合を含むことができる。
【0054】
(本発明の実施形態のための動作環境)
まず、
図1を参照すると、本発明のある特定の実施形態の例示的なハードウェアプラットフォームが示される。コンピュータ102は、デスクトップコンピュータ、ラップトップコンピュータ、サーバコンピュータ、スマートフォン又はタブレットなどのモバイルデバイス、又は汎用若しくは専用コンピューティングデバイスの任意の他のフォームファクターとすることができる。コンピュータ102には、説明のためにいくつかの構成要素が示されている。いくつかの実施形態では、ある特定の構成要素は、異なって配置されても良く、又は存在しなくてもよい。追加の構成要素が存在してもよい。コンピュータ102には、コンピュータ102の他の構成要素が互いに通信することができるシステムバス104が含まれる。ある特定の実施形態では、複数のバス又は構成要素が互いに直接通信をとってもよい。システムバス104には、中央処理装置(CPU)106が接続される。また、システムバス104には、1つ以上のランダムアクセスメモリ(RAM)モジュール108が接続される。また、システムバス104には、グラフィックスカード110が接続される。いくつかの実施形態では、グラフィックスカード110は、物理的に別個のカードではなくても良く、むしろマザーボード又はCPU106に統合されてもよい。いくつかの実施形態では、グラフィックスカード110は、別個のグラフィックス処理ユニット(GPU)112を有し、これは、グラフィックス処理又は汎用コンピューティング(GPGPU)のために使用できる。また、グラフィックスカード110上にはGPUメモリ114がある。グラフィックスカード110には、ユーザの相互作用のためのディスプレイ116が(直接的又は間接的に)接続される。いくつかの実施形態では、ディスプレイは存在しないが、他の実施形態では、ディスプレイはコンピュータ102に統合される。同様に、キーボード118及びマウス120などの周辺機器は、システムバス104に接続される。ディスプレイ116と同様に、これらの周辺機器は、コンピュータ102に統合されても良く、又は存在しなくてもよい。また、システムバス104に接続されているのは、ローカルストレージ122であり、これは、任意の形態のコンピュータ可読媒体であり得、コンピュータ102に内部にインストールされてもよく、又は外部に取り外し可能に取り付けられてもよい。
【0055】
コンピュータ可読媒体は、揮発性及び不揮発性媒体の両方、取り外し可能及び取り外し不能媒体の両方を含み、データベースによって読み取り可能な媒体を意図する。例えば、コンピュータ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、ホログラフィック媒体又は他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、及び他の磁気ストレージデバイス(ただし、これらに限定されない)を含む。これらの技術は、データを一時的又は永続的に格納できる。しかし、特に明記されていない限り、「コンピュータ可読媒体」という用語は、無線放送、ワイヤーを通じた電気信号、又は光ファイバーケーブルを通じた光パルスなどの物理的ではあるが一時的な信号伝送の形態を含むと解釈されるべきではない。格納された情報の実施例には、コンピュータ使用可能命令、データ構造、プログラムモジュール、及び他のデータ表現が含まれる。
【0056】
最後に、ネットワークインターフェースカード(NIC)124は、システムバス104にも接続され、それにより、コンピュータ102がネットワーク126などのネットワーク上で通信できるようになっている。NIC124は、イーサネット、ATM、ファイバ、Bluetooth、又はWi-Fi(すなわち、Institute of Electrical and Electronics Engineers(IEEE) 802.11ファミリの標準)など、当技術分野で既知の任意の形態のネットワークインターフェースであってよい。NIC124は、コンピュータ102をローカルネットワーク126に接続し、これはまた、コンピュータ128などの1つ以上の他のコンピュータ、及びデータストア130などのネットワークストレージを含んでもよい。一般に、データストア130などのデータストアは、情報を格納し、必要に応じて取り出すことができる任意のリポジトリであってもよい。データストアの実施例としては、リレーショナル又はオブジェクト指向のデータベース、スプレッドシート、ファイルシステム、フラットファイル、LDAP及びActive Directoryなどのディレクトリサービス、電子メールストレージシステムなどが挙げられる。データストアは、複雑なAPI(例えば、構造化照会言語など)、読み取り、書き込み、及び検索の動作のみを提供する単純なAPI、又はその間の任意のレベルの複雑さを介してアクセス可能であってもよい。いくつかのデータストアは、バックアップ又はバージョニングなどの、そこに格納されたデータセットのための管理関数を更に提供してもよい。データストアは、コンピュータ128などの単一のコンピュータに対してローカルであり得、ローカルネットワーク126などのローカルネットワーク上でアクセス可能であってもよく、又は公衆インターネット132上で遠隔によりアクセス可能であってもよい。ローカルネットワーク126は、次に、ローカルネットワーク126、リモートネットワーク134、又はコンピュータ136などの直接接続されたコンピュータなどの多くのネットワークを接続する公衆インターネット132に接続される。いくつかの実施形態では、コンピュータ102自体は、公衆インターネット132に直接接続され得る。
【0057】
ここで
図2に戻ると、本発明の実施形態を実施するためのシステムの構成要素を示す例示的な図が示され、概して参照番号200によって参照される。システム200は、イベントベースのアプリケーションを構築、展開、走行、監視、及び維持するためのプラットフォームを提供する。システム200は、グループベースの通信システムクライアントデバイス204、モバイルクライアントデバイス206、及び開発者クライアントデバイス202などの任意の数のクライアントデバイスを含む。個々のユーザは、同時に又は連続して、単一のクライアントデバイス又は複数のクライアントデバイスを使用してシステム200の構成要素に接続してよい。同様に、いくつかの実施形態では、複数のユーザが、グループベースの通信システムにアクセスするために、単一のクライアントデバイスを(同時に又は順次に)共有してもよい。
図2に示されるように、クライアントデバイスは、
図1に関して上述した任意の形態のコンピューティングデバイスであってもよい。特に、ユーザは、デスクトップ、ラップトップ、又はモバイルデバイスを使用して、システム200の構成要素にアクセスし得る。システム200の構成要素は、特定のクライアントデバイスの専用ソフトウェアを介して、又はクライアントデバイスに関連付けられたウェブブラウザを介してアクセス可能であってよい。いくつかの実施形態では、開発者及びアプリケーションホスティングシステム管理者は、任意のクライアントデバイスを介して管理機能にアクセスすることができる。他の実施形態では、管理関数は、クライアントデバイスの限定されたサブセットからのみ(例えば、開発者クライアントデバイス202を介してのみ)アクセスすることができる。いくつかの実施形態では、グループベースの通信システム212は、グループベースの通信システムサーバ210及びグループベースの通信データストア208などの複数のグループベースの通信システムサーバ及びグループベースの通信データストアをホスティングすることができるチャネルベースのメッセージングプラットフォームである。
【0058】
いくつかの実施形態では、グループベースの通信システム212は、グループベースの通信システムサーバ210に関連してサービスを提供する。グループベースの通信システムサーバ210は、専用サーバ、共有サーバ、クラウドコンピューティング環境における仮想マシンインスタンス、又は
図1に関して上述した任意の他の形態のコンピューティングデバイスであってもよい。単一のグループベースの通信システムサーバ210が示されているが、グループベースの通信システムの異なるインスタンス間のスケール、冗長性、及び/又は分離を提供するように、複数のそのようなグループベースの通信システムサーバを有する実施形態も企図される。例えば、セキュリティ上の理由から、競合他社のグループベースの通信システムと同一のサーバにグループベースの通信システムをホスティングさせることをソフトウェア開発会社が望まない場合がある。
【0059】
クラウドサービスプロバイダ214は、専用サーバ、共有サーバ、クラウドコンピューティング環境内の仮想マシンインスタンス、又は
図1に関して上述された任意の他の形態のコンピューティングデバイスの形態でデータストレージ及びコンピューティングリソースを提供するオンデマンドのクラウドコンピューティングプラットフォームを表す。クラウドサービスプロバイダ214は、イベント駆動型サーバレス実行環境におけるサーバレス実行を含む、サービスとしてのソフトウェア(SaaS)、サービスとしてのインフラストラクチャ(IaaS)、又はサービスとしてのプラットフォーム(PaaS)を提供してよい。サーバレス実行環境は、特定の実行環境のために構築されたアプリケーションコンテナの展開を可能にしてよい。概して、アプリケーションコンテナは、アプリケーションコード、アプリケーション構成リソース、及びある特定の関連付けられたライブラリ及びアプリケーションの迅速かつ独立した展開を可能にするアプリケーション依存を含む特定のアプリケーションの孤立したインスタンスである。
【0060】
サーバ210は、ネットワーク216を介して、クライアントデバイス202、204、及び206、並びにクラウドサービスプロバイダ214に通信可能に結合される。ネットワーク216は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、又はインターネットであってよい。概して、システム200の様々な構成要素間の通信を提供するための任意のタイプのネットワークが企図される。グループベースの通信システムサーバ210は、ウェブベースのクライアントを可能にするウェブサーバ機能、及び専用アプリケーションを使用するクライアントを可能にする非ウェブサーバ機能を提供してよい。代替的に、ウェブベースのクライアント及び専用アプリケーションクライアントの両方は、単一のウェブサーバを使用する可能性もあれば、ウェブサーバが専用アプリケーションサーバへのウェブベースのアクセスを提供するゲートウェイである可能性もある。様々なタイプのクライアントアプリケーション間の通信を可能にする他の技術も考えられる。
【0061】
グループベースの通信システムデータストア208は、グループベースの通信システムサーバ210に通信可能に接続される。図示されるように、グループベースの通信システムデータストア208は、グループベースの通信システムサーバ210に直接接続されるが、任意の形態の通信接続(例えば、ネットワーク接続ストレージ(NAS)、ネットワークファイルシステム(NFS)、又はクラウドベースのストレージ)を採用することができる。大まかに言えば、グループベースの通信システムデータストア208は、グループベースの通信システムサーバ210によって使用される耐久性のある情報の全てを格納する。例えば、グループベースの通信システムデータストア208は、メッセージの全てを、それらの関連付けられたチャネル、特定のチャネルにアップロードされたドキュメント及び画像、チャネルメンバーシップ情報、及び/又はユーザ情報とともに格納してもよい。前述のように、複数のグループベースの通信システムサーバがシステム200に存在し得る。そのような実施形態では、各グループベースの通信システムサーバは、グループベースの通信システムデータストア208の独自のコピーを有してよい。代替的に、複数のグループベースの通信システムサーバは、単一のネットワーク接続されたグループベースの通信システムデータストアを共有してもよい。代替的に、又は追加的に、これらの実施形態のいずれにおいても、データは、複数のグループベースの通信システムデータストアにわたって分割されてよい。
【0062】
ここで
図3を参照すると、本発明の実施形態を実施するためのブロック図が示され、概して参照番号300によって参照される。様々な実施形態では、トリガ302は、関数320の実行をトリガするように構成される。トリガは、アプリケーションの実行を開始し、スケジュール304、ウェブフック306、ショートカット308、又はスラッシュコマンド310の形態をとってよい。いくつかの実施形態では、スケジュール304は、トリガの定期的な始動がスケジュールされ得るように、タイマーのように動作する。いくつかの実施形態では、イベントベースのアプリケーションのエンドユーザは、1時間に1回又は毎日午前9時15分など、トリガの始動のための任意のスケジュールを設定する。更に、トリガ302は、ウェブフック306の形態をとってよい。ウェブフック306は、ウェブフックURL及びポートでリッスンするソフトウェア構成要素である。いくつかの実施形態では、適切なHTTP要求がウェブフックURL及びポートで受信されると、トリガが始動する。いくつかの実施形態では、ウェブフック306は、ベアラートークンなどによる適切な認証を必要とする。いくつかの実施形態では、特定のウェブフック呼び出しに関連付けられたペイロードは、任意のトリガを始動させる前にウェブフックで処理される情報を含む。いくつかの実施形態では、ウェブフック306が呼び出されるたびにトリガ302のうちの1つが始動し、特定のウェブフック呼び出しに関連付けられたペイロードの一部又は全てが関数320の1つ以上に渡される。いくつかの他の実施形態では、トリガがペイロードコンテンツに依存する。
【0063】
トリガ302のうちの1つの別のソースは、グループベースの通信システムに関連付けられたショートカット308内のショートカットである。いくつかの実施形態では、ショートカット308は、グループベースの通信システムに対してグローバルであるか、又はグループベースの通信システムチャネルに固有である。グローバルショートカットは、グループベースの通信システムチャネル又はワークスペースに固有のものではない。グローバルショートカットは、グループベースの通信メッセージコンポーザのショートカットボタンから、又はグループベースの通信システムクライアントインタフェースに関連付けられた検索インターフェース内から開始されてよい。グローバルショートカットは、特定のグループベースの通信システムメッセージ又はグループベースの通信チャネルのコンテキストを用いずに実行できる関数をトリガしてよい。対照的に、メッセージベース又はチャネルベースのショートカットは、グループベースの通信システムメッセージ又はチャネルに固有であり、特定のグループベースの通信システムメッセージ又はグループベースの通信チャネルのコンテキスト内で動作する。
【0064】
トリガ302のうちの1つの更なるソースは、スラッシュコマンド310によって提供されてもよい。スラッシュコマンド310は、グループベースの通信システムの関数、外部サービスとの統合、又はグループベースの通信システムメッセージ応答のエントリポイントとして機能してよい。いくつかの実施形態では、スラッシュコマンド310は、特定のアプリケーションの機能の実行をトリガするために、グループベースの通信システムのユーザによって入力されてよい。特定のスラッシュコマンドは、グループベースの通信システムのユーザによって、通常、グループベースの通信システムメッセージを入力するために使用されるユーザ入力構成要素に直接入力されてよい。いくつかの実施形態では、スラッシュコマンド310は、フォワードスラッシュ(「/」)が先行するという点で、グループベースの通信システムメッセージと区別可能である。スラッシュコマンドの後には、関数320のうちの1つなどのグループベースの通信システムの関数のトリガに関連して呼び出される任意のグループベースの通信システムの関数に沿って渡され得るスラッシュコマンドラインパラメータが続いてもよい。
【0065】
関数のトリガの追加のソースは、イベント(イベント312など)がサブスクリプション(サブスクリプション318など)で所定の1つ以上の条件に一致するときである。イベント312は、任意の数のサブスクリプション318によってサブスクリプションされてよく、各サブスクリプションは、異なる条件を指定し、異なる関数をトリガしてよい。いくつかの実施形態では、イベントは、1つ以上のグループベースの通信システムチャネルで受信されるグループベースの通信システムメッセージである。アプリケーションイベント314は、グループベースの通信システムチャネル内のアプリケーションによって作成される関連付けられたメタデータを有するグループベースの通信システムメッセージであってもよい。また、イベント312は、実際のユーザ又はボットなどの技術ユーザであり得る1つ以上のグループベースの通信システムユーザによって受信された直接メッセージであってもよい。ボットは、タスクを自動化するために使用されるグループベースの通信システムの技術ユーザである。ボットは、様々な関数を行うようにプログラムで制御されてよい。ボットは、グループベースの通信システムのチャネル活動を監視し、処理を支援するだけでなく、グループベースの通信システムのチャネルにメッセージを投稿し、メンバーのチャネル内の活動に反応してよい。ボットは、グループベースの通信システムに関連付けられた名前、プロフィール、プロフィール写真を有してよい。ボットは、グループベースの通信システムメッセージで参照され、ダイレクトメッセージを送信され得る。ボットは、グループベースの通信システムで、メッセージを投稿したり、ファイルをアップロードしたり、パブリックチャネル及びプライベートチャネルの両方から招待されたり、削除されたりすることができ得る。
【0066】
また、イベント312は、グループベースの通信システムに関連付けられた任意のイベントであってもよい。このようなグループベースの通信システムイベント316は、グループベースの通信システムにおけるユーザアカウントの作成、修正、又は削除に関するイベント、グループベース通信システムチャネルにおけるメッセージに関するイベント(メッセージの作成、メッセージの編集若しくは削除、又はメッセージへの反応など)を含む。また、イベント312は、グループベースの通信システムチャネルの作成、修正、若しくは削除、又はチャネルのメンバーシップに関連してよい。また、イベント312は、ユーザプロファイルの修正又はグループの作成、メンバーのメンテナンス、又はグループの削除に関連してよい。また、イベント312は、例えば、サードパーティのインシデント管理システム内のチケットのステータスの変更のようなサードパーティの統合によって検出された変更によってトリガされてもよい。
【0067】
上述したように、サブスクリプション318は、イベントによってマッチングされたときに、関数をトリガする1つ以上の条件を示す。いくつかの実施形態では、イベントが発生したときに、イベントに関する情報がサブスクリプションのセットと照合されて、関数320のうちのどれ(もしあれば)が呼び出されるべきかを判定するように、1セットのイベントサブスクリプションがグループベースの通信システムに関連して維持される。いくつかの実施形態では、特定のアプリケーションがサブスクライブし得るイベントが権限フレームワークによって管理される。一実施形態では、サブスクリプションに対してマッチングされたイベントタイプは、特定のグループベースの通信システムの管理者によって維持され得るOAuth許可スコープによって管理される。
【0068】
トリガ302及びサブスクライブされたイベント312によってトリガされる関数320は、様々な形態で提供されてもよい。第一に、特定のグループベースの通信システムのコア機能に関連付けられたグループベースの通信システム「built-ins」322が存在する。いくつかの例は、グループベースの通信システムユーザ又はチャネルを作成することを含む。次に、上記のようにワークフロービルダーユーザインターフェースに関連して、グループベースの通信システムユーザのユーザによって開発され得るビルダー「no code」関数324である。最後に、ソフトウェア開発環境に関連してソフトウェアコードとして開発されるグループベースの通信システムアプリケーションによって実装されるコード「hosted」326機関数能が存在する。
【0069】
これらの様々なタイプの関数320は、次いで、API328と統合してもよい。いくつかの実施形態では、API328は、特定のサードパーティのサービスとグループベースの通信システムとの間のカスタム統合を提供するために関数320が採用するサードパーティのサービスに関連付けられている。サードパーティのサービス統合の例は、ビデオ会議と、販売と、マーケティングと、カスタマーサービスと、プロジェクト管理と、エンジニアリングアプリケーションの統合とを含む。そのような例では、トリガ302のうちの1つが、統合されたAPI328の1つを介してサードパーティのビデオ会議プロバイダにAPI呼び出しを行うコード「hosted」関数326をトリガするために使用されるスラッシュコマンド310であってよい。
図3に示されるように、API328自体も、1つ以上のトリガ302又はイベント312のソースになってよい。この例では、ビデオ会議が正常に完了すると、サードパーティのビデオ会議プロバイダへの更なるAPIコールを開始するメッセージを送信する関数320のうちの1つがトリガされ、ビデオ会議の録画をダウンロードしてアーカイブし、それをグループベースの通信システムチャネルに保存することができる。
【0070】
API328と統合することに加えて、関数320は、テーブル330内のデータを永続化し、かつアクセスしてもよい。いくつかの実施形態では、特定のイベントベースのアプリケーションが実行されているサーバレス実行環境に関連付けられたデータベース環境に関連してテーブル330が実装される。一実施形態では、テーブル330は、関係のあるデータベース環境に関連して提供されてもよい。他の実施形態では、テーブル330は、リレーショナルデータベース技術を採用しないデータベース機構に関連して提供される。
図3に示されるように、いくつかの実施形態では、テーブル330のうちの1つ以上、又は事前定義された条件に一致するテーブル内のデータへのある特定のデータの読み取り又は書き込みは、それ自体、1つ以上のトリガ302又はイベント312のソースである。例えば、テーブル330がインシデント管理システム内のチケット発行データを維持するために使用される場合、所定の閾値を超えるオープンチケットのカウントは、グループベースの通信システム内のインシデント管理チャネルに投稿されているメッセージをトリガしてよい。
【0071】
ここで
図4を参照すると、本発明のある特定の実施形態におけるワークフローステップを追加するためのユーザインターフェースの構成要素が示され、概して参照番号400によって参照される。様々な実施形態では、使用可能なワークフローステップのコーパスが、ワークフロー構築ユーザに利用可能にされる。一実施形態では、ワークフロー構築ユーザがワークフロー内で特定のステップを行うために必要とするワークフローステップの名前又は他の特性によって、特定のワークフローステップを検索できるように検索フィールド402が提供される。ワークフロー構築ユーザは、ワークフローステップの作成者に基づいて、ワークフローステップの機能又は説明の観点から、又は特定のワークフローステップの作成又は公開に関連付けられた日付範囲に基づいて、ワークフローステップを検索してよい。
【0072】
いくつかの実施形態では、リストされた利用可能なワークフローステップのうちの1つ以上は、それぞれのワークフローステップに関連付けられた「追加」ボタンをクリックすることによってワークフローに追加されてもよい。
図4の例に示されているように、様々なワークフローステップが提供されてよい。ワークフローステップ404は、フォームを作成する関数を行うステップであり、フォームは、グループベースの通信システムのエンドユーザに表示され、エンドユーザによる使用のためにインタラクティブにされる。ワークフロー構築ユーザがクリックして、構築されているワークフローにワークフローステップ404を追加すると、ワークフロー構築ユーザによって、ワークフローステップの更なる構成(図示せず)が行われ得る。ワークフローステップ406は、グループベースの通信システム内でメッセージを送信する関数を行うステップである。ワークフローステップ408は、グループベースの通信システムショートカットを実装するためのショートカットであり、これは、グループベースの通信システムで構成されるように、ショートカットに関連付けられた基礎となるグループベースの通信システムの関数を実行するステップである。ワークフローステップ404、406、及び408は、例証された実施形態では、特定のグループベースの通信システムのオペレータである「GBCS Co.」からのものであることが示されている。これらのワークフローステップは、グループベースの通信システムのコア機能の一部であるため、組み込まれていると言われている。
【0073】
いくつかの実施形態では、ワークフロー構築ユーザが利用可能なワークフローステップをフィルタリングするのを支援するために、フィルタ基準が提供される。そのようなフィルタ基準は、示されるような限定されない全てのステップのリストを提供する空のフィルタ基準416を含む。また、フィルタ基準は、GBCS Co.によって提供される組み込みのワークフローステップに表示を制限するフィルタ基準418を含む。この実施形態では、フィルタ基準はまた、ワークフローステップの構成及びその時点までのワークフローの任意の現在の状態に基づいてスプレッドシート行を追加及び削除する機能を提供するワークフローステップ410及び412などのサードパーティのアプリケーションによって提供されるワークフローステップに表示を制限するフィルタ基準420を含む。
【0074】
また、ワークフローステップ414は、
図4に示されるワークフロービルダーのユーザインターフェース内でグループベース通信システムの関数を実装し、公開する、ホストされたグループベースの通信システムアプリケーションによって公開されるステップである。ワークフローステップ414は、「ホスト動作中」と題され、「ホスティングアップ」と題されたグループベースのアプリケーションに関連付けられている。様々な実施形態では、ワークフロー構築ユーザは、ユーザインターフェースの構成要素400と対話して、表示されたワークフローステップを、それぞれ「Spreadsheet for Workflow Builder」及び「Host Up」のサードパーティアプリケーションに対応する、アプリケーション識別子422及び424などの特定のサードパーティアプリケーションによって提供されるものにのみフィルタリングしてよい。
【0075】
ここで
図5Aを参照すると、本発明のある特定の実施形態における関数への引数を構成するためのユーザインターフェースの構成要素が示され、概して参照番号500によって参照される。ユーザインターフェースの構成要素500は、
図4のワークフローステップ414を追加することを選択したワークフロー構築ユーザに関連して、そのワークフロー構築ユーザに提示される。
図5Aは、ワークフロー構築ユーザが、それによってホスティングされたアプリケーションによって実装された関数に関連付けられたワークフローステップを更に構成することが可能になるステップ構成モーダルダイアログボックスを示す。ユーザ入力要素502及び504は、ユーザインターフェースの構成要素500に関連して構成されているワークフローステップに関連付けられた関数の入力引数に対応し、ユーザインターフェースの構成要素500は、特定のホストが動作可能であるか、すなわち「動作中」であるかを確認する。最初の引数は、「誰かがホストが動作中と言ったとき、あなたは次のように言います」と題されている。いくつかの実施形態では、ユーザ入力要素502は、ワークフロー構築ユーザが親指を立てた絵文字とテキスト「当然」を入力したテキストボックスである。一実施形態では、特定の関数を公開するホスティングされたアプリケーションは、ユーザ入力要素502及び504のデフォルト値を提供する。
【0076】
いくつかの実施形態では、ワークフロー構築ユーザは、ユーザ入力要素502及び504に関連して一定の文字列の代わりに変数を提供するために、変数リンク512及び514の何れに挿入するかを選択してよい。変数を有するユーザ入力要素502及び504の構成は、以下の
図5Bに関連して更に説明される。様々な実施形態では、ワークフロー構築ユーザが、ワークフローステップを同期させて行うべきかどうかを指定できるように、チェックボックス516が提供される。「続行する前にステップが完了するのを待つ」と題されたチェックボックス516がチェックされた場合、ワークフローステップは同期ステップとして扱われ、ワークフローステップが完了するまでワークフロー実行は阻止される。代替的に、チェックボックスがオフになっている場合、ワークフローステップが行われている間の実行は阻止されない。いくつかの実施形態では、削除ボタン510、キャンセルボタン508、及び保存ボタン506がユーザインターフェースの構成要素500に提供される。削除ボタン510を選択すると、ワークフローステップがワークフローから削除される。キャンセルボタン508は、ワークフローステップの構成操作をキャンセルし、保存ボタン506は、ワークフローステップの構成操作に関連して行われた変更を保存する。
【0077】
ここで
図5Bを参照すると、本発明のある特定の実施形態では、関数への引数に関連付けられた変数を挿入するためのユーザインターフェースの構成要素が示され、概して参照番号550によって参照される。ユーザインターフェースの構成要素550は、
図5Aの変数を挿入することを選択したワークフロー構築ユーザに関連して、ワークフロー構築ユーザに提示される。
図5Bは、モーダルダイアログボックス「変数を挿入」を示し、それによって、ワークフロー構築ユーザが、ホスティングされたアプリケーションによって実装される関数に関連付けられたワークフローステップの構成に関連して挿入される変数を指定することが可能になる。いくつかの実施形態では、グループベースの通信システムの関数及びワークフローに関連付けられた挿入する可能性のある変数のリストが提供される。いくつかの実施形態では、挿入される変数は、呼び出されているグループベースの通信システムの関数に関連付けられたショートカットに関連付けられており、そのような例示的なショートカットは、ショートカット552及び554として
図5Aに示されている。ワークフローステップを実装する関数に関連付けられた変数は、「ステータス」と題された変数556として示されている。いくつかの実施形態では、変数のうちの1つを右クリックする(又は長押しジェスチャを提供する)ことは、変数に関する追加情報を提供する。変数を選択すると、モーダルダイアログボックスが非表示になり、
図5Aのユーザインターフェースコントロール500などのワークフローステップ構成ユーザインターフェースコントロールに関連付けられたそれぞれのユーザ入力に変数が挿入される。
【0078】
(本発明の実施形態の操作)
ここで
図6を参照すると、本発明の実施形態を実施するためのデータフロー
図600が示されている。データフロー
図600に示されるのは、イベントベースのアプリケーション開発環境602である。いくつかの実施形態では、イベントベースのアプリケーション開発環境602は、ソースコードエディタ及び様々な他のソースコード開発ツールで作成される。いくつかの実施形態では、これらのツールは、
図2の開発者デバイス202などの開発者デバイスにインストールされる。代替的に、イベントベースのアプリケーション開発システムを遠隔でホスティングして、開発者がイベントベースのアプリケーション開発環境602と対話できるように、フロントエンドインターフェースを開発者に提供することができる。
【0079】
イベントベースのアプリケーション開発環境602に加えて、1つ以上のイベントベースのアプリケーションを実行するための環境であるイベントベースのアプリケーション実行環境604も図示される。イベントベースのアプリケーション実行環境604は、グループベースの通信システムのオペレータによって操作されるデータセンターでホスティングされてよい。代替的に、イベントベースのアプリケーション実行環境604は、パブリッククラウド若しくはプライベートクラウド、又はグループベースの通信システムからサービスを消費する企業によって運営されるデータセンター内のオンプレミスでホスティングされ得るが、企業によって運営されるデータセンター外での特定のイベントベースのアプリケーション及び関連付けられたデータのホスティングは許可しない。いくつかの実施形態では、イベントベースのアプリケーション実行環境604は、パブリック又はプライベートクラウドプラットフォームに関連してホスティングされるサーバレス実行環境である。
【0080】
また、データフロー
図600は、
図3に関して上述したように、イベントベースのアプリケーションによって潜在的に消費されるイベントの任意のソースである外部イベントソース606を示す。外部イベントソース606は、グループベースの通信システムチャネルにメッセージを入力するユーザであってもよい。ユーザは、テキスト又は他のデータをグループベースの通信システムに関連付けられたクライアントインターフェースに入力することによって、メッセージをグループベースの通信システムチャネルに直接入力してよい。また、ユーザは、(例えば)インターフェース内のボタンをクリックすることによって、又はそうでなければグループベースの通信システムに関連付けられたインターフェースと対話することによって、クライアントインターフェースに関連付けられた対話型インターフェースをクリックすることによってイベントを生成させてよい。また、外部イベントソース606は、1つ以上のトリガイベントに基づいて1つ以上の出力イベントを生成するイベントベースのアプリケーションであってもよい。また、外部イベントソース606は、ニュースソース又はソーシャルメディアサイトなどの外部アプリケーションであってもよい。グループベースの通信システム608はまた、以下に説明するように、データフロー内のイベントのソース及び受信者の両方、並びにグループベースの通信システムワークフローステップのインターフェース及び実行環境として図示される。
【0081】
データフロー
図600の環境内では、フロー610に示されるように、アプリケーション開発者は、イベントベースのアプリケーションの開発のコンテキストで、新規のプロジェクトの足場材を設けてもよく、又は既存のプロジェクトのコードを取得してもよい。いくつかの実施形態では、このデータは、スケルトンアプリケーションがイベントベースのアプリケーション実行環境604に関連付けられた中央の場所に提供される場合と同様に、イベントベースのアプリケーション実行環境604から流入する。これはまた、例えば、ソースコードリポジトリ関数がイベントベースのアプリケーション実行環境604によっても提供される場合もあり得る。外部ソースコードリポジトリ(図示せず)は、アプリケーション開発者にソースコード制御機能を提供するためにも利用され得ることが理解される。アプリケーション開発者がスケルトンアプリケーションの足場材を設けるか、又は既存のプロジェクトを取得すると、アプリケーション開発者は、デバッグするか、又はイベントベースのアプリケーションに機能を追加することができる。いくつかの実施形態では、アプリケーション開発者がイベントベースのアプリケーションを反復的に開発できるように、イベントベースのアプリケーション開発環境602に関連して、アプリケーション実行環境のエミュレータ又はシミュレーションが提供される。代替的に、イベントベースのアプリケーションに関連付けられた1セットのファイル内でファイルが変更されるたびに、イベントベースのアプリケーションは、イベントベースのアプリケーション実行環境604上に展開される。
【0082】
フロー612は、この展開命令及び/又は走行命令を図示する。いくつかの実施形態では、アプリケーションがアプリケーション構成メタデータに基づいてまだ作成されていない場合、イベントベースのアプリケーションをイベントベースのアプリケーション実行環境604に展開することは、アプリケーションを作成することを要する。代替的に、アプリケーションは、更新されたアプリケーションソースコード及びアプリケーション構成メタデータに基づいて更新される。いくつかの実施形態では、イベントベースのアプリケーションに関連付けられたアプリケーションアイコンファイルが最後の展開以降に変更された場合、そのアプリケーションアイコンファイルは前処理され、アプリケーション実行環境にアップロードされる。前処理には、アイコンファイルのサイズ及び寸法などのアプリケーションアイコンサイジングの要件に従って、アイコンを中央に配置してトリミングすることを要する。いくつかの実施形態では、ソースコードは、アプリケーション実行環境ホスティングプラットフォームにバンドルされ、アップロードされる。イベントベースのアプリケーションに関連付けられた実行環境がまだプロビジョニングされていない場合、実行環境がプロビジョニングされる。いくつかの実施形態では、アプリケーションコンテナは、アプリケーション実行環境に展開する前に、フロー616で構築される。
【0083】
フロー618において、アプリケーション開発者は、デバッグイベントを作成及び監視して、アプリケーション開発の過程でイベントベースのアプリケーションをテストする。これは、グループベースの通信システムに関連付けられたAPIを使用して、事前定義された入力及び対応する関連付けられた予想される出力を有するアプリケーションテストスイートを実装することを含んでよい。イベントベースのアプリケーションは、展開されると、開発中であろうと本番環境であろうと、イベントを受信し、それらを処理し、イベントベースのアプリケーションによって実装されるアプリケーションロジックに対応する出力を生成する。
【0084】
ここで
図7を参照すると、本発明の一実施形態による方法の動作を例示するための例示的なフローチャート700が図示される。様々な実施形態では、アプリケーション開発者は、開発環境で作業して、イベントベースのアプリケーションの基礎を提供するソースコードを開発する。アプリケーション開発者は、アプリケーション構成ファイル内のアプリケーション構成パラメータなどのソースコード命令及びアプリケーションメタデータを入力する。いくつかの実施形態では、ソースコード命令は、プログラミング言語のECMAScriptファミリの言語のうちの1つなどのスクリプト言語のソースコードファイルの形態で提供される。他の実施形態では、ソースコード命令は、コンパイルされたプログラミング言語における未コンパイル又は事前コンパイルされたソースコードの形態で提供される。いくつかの実施形態では、アプリケーション構成パラメータは、YAML構成ファイルの形式で提供される。他の実施形態では、別のマークアップ言語(JSON又はXMLなど)が使用される。いくつかの実施形態では、アプリケーション命令及び構成パラメータを構成するデータファイルは、単一のデータファイルとして送信するためにアーカイブにパッケージ化される。いくつかの他の実施形態では、ファイルは、ホスティング環境に個別に送信されてもよい。ステップ702において、これらのアプリケーション命令及び構成パラメータが受信される。いくつかの実施形態では、アプリケーション命令及び構成パラメータは、開発環境に関連付けられた中間処理プログラムによって受信され、これは、
図2の開発デバイス202などのアプリケーション開発者の開発クライアントデバイス上で走行され得る。様々な実施形態では、アプリケーション命令は、イベントがグループベースの通信システムで受信されるときに、ある特定のイベントに対して動作するように設計されている。
【0085】
次に、ステップ704において、アプリケーション命令及びアプリケーション構成パラメータに基づいてアプリケーションコンテナが生成される。本明細書で使用される場合、アプリケーションコンテナは、ライブラリなどのコード及び依存関係をパッケージ化するソフトウェアのユニットであるため、アプリケーションは、あるアプリケーション実行環境から別のアプリケーション実行環境にシームレスかつ確実に展開され得る。いくつかの実施形態では、アプリケーションコンテナイメージは、軽量でスタンドアロンなソフトウェア及び構成メタデータのパッケージであり、特定の走行時間でアプリケーションを走行させるために必要な全てを含んでいる。コンテナ走行時間は、特定のカテゴリのアプリケーションコンテナを走行させることができる実行環境である。いくつかの実施形態では、アプリケーションコンテナは、任意の仮想マシン実行環境で実行することができる仮想マシンイメージである。
【0086】
次に、ステップ706において、アプリケーションコンテナは、アプリケーション実行環境に展開される。いくつかの実施形態では、アプリケーションコンテナは、ネットワークを介して、パブリッククラウド又はプライベートクラウドのいずれかをホスティングするリモートデータセンターに転送される。いくつかのテスト環境では、実行環境は、アプリケーション開発者の開発デバイス上に存在するアプリケーション実行環境であってよい。いくつかの実施形態では、アプリケーション実行環境は、グループベースの通信システムのオペレータによって運営されるデータセンター内、又は別のパブリッククラウド若しくはプライベートクラウド内の何れかで、グループベースの通信システムのオペレータによってホスティングされる。いくつかの他の実施形態では、アプリケーション実行環境は、グループベースの通信システムからサービスを消費する企業が運営するデータセンター内のオンプレミスでホスティングされるが、企業が運営するデータセンター外で特定のイベントベースのアプリケーションと関連付けられたデータをホスティングすることは許可されない。いくつかの実施形態では、アプリケーションコンテナの展開は、また、イベントベースのアプリケーションに関連付けられた処理の実行を開始することを要する。この実施形態では、イベントベースのアプリケーションは、パブリックIPアドレスに関連付けられたウェブフックURL及びポートでリッスンする。いくつかの他の実施形態では、イベントベースのアプリケーションは、単に展開され、関連するイベントがグループベースの通信システムで受信されるまで実行されない。
【0087】
テスト708を続けると、イベントベースのアプリケーションが展開されると、監視処理は、グループベースの通信システムに関連付けられた1つ以上のグループベースの通信システムチャネルに関連して実行可能なイベントが受信されたかどうかを判定する。いくつかの実施形態では、実行可能なイベントが受信されたかどうかを判定し得る基準は、1つ以上のトリガの構成に基づいている。トリガは、
図3に関して概して上述したように、イベントベースのアプリケーションに関連付けられた特定の関数にルーティングされるべきイベントの記述であってもよい。実行可能なイベントが受信されない場合、モニタリングは実行可能なイベントが受信されるのを待ち続ける。テスト708において、実行可能なイベントが受信された場合、実行はステップ710に進む。
【0088】
ステップ710において、実行可能なイベントは、適切な展開されたアプリケーションコンテナに送信される。いくつかの実施形態では、これは、トリガに関連付けられたある特定の条件が、グループベースの通信システムに関連して発生したメッセージ又は他のイベントによって満たされたように、トリガが発生したことを検出するグループベースの通信システムを含む。いくつかの実施形態では、これは、グループベースの通信システムチャネルで受信されたメッセージ又は他のグループベースの通信オブジェクトの受信であってよい。概して、
図3に関して上述したイベントは、ステップ710で処理されるものとして企図される。いくつかの実施形態では、イベントは、グループベースの通信システムによってJSONオブジェクトとしてフォーマットされ、イベントベースのアプリケーションに関連付けられたウェブフックURLにHTTP送信を投稿することによって、イベントベースのアプリケーションに送信される。これらの実施形態では、HTTP伝送は、実行可能なイベントが受信され、それがイベントベースのアプリケーションの実行をトリガすべきであるという表示である。
【0089】
次に、ステップ712で、グループベースの通信システムが、前のステップで送信されたイベントに応じた応答を受信する。いくつかの実施形態では、応答は、イベントベースのアプリケーション内に含まれ、グループベースの通信システムに関連付けられたアプリケーションロジックを含む関数に関連付けられた複合出力である。いくつかの実施形態では、イベントベースのアプリケーションに関連付けられたアプリケーションロジックの実行は、ビデオ会議セッションを開いたり、データ永続化ストアにデータを書き込んだりするなど、様々な副作用をもたらす。
【0090】
最後に、ステップ714において、応答に基づいて、メッセージがそれぞれのグループベースの通信システムチャネルに投稿される。いくつかの実施形態では、投稿されたメッセージは、それ自体が、イベントベースのアプリケーション又は別のイベントベースのアプリケーションでの更なる処理をトリガし得るイベントである。いくつかの他の実施形態では、投稿されたメッセージは、グループベースの通信システムのユーザによって更に動作されるときに、更なるイベントに、グループベースの通信システムに関連付けられた1つ以上のイベントベースのアプリケーションによる更なる実行をトリガさせる対話型属性を含んでよい。
【0091】
描かれる様々な構成要素、及び示されていない構成要素の多くの異なる配置は、以下の特許請求の範囲から逸脱することなく可能である。本発明の実施形態は、限定的ではなく、例示的であることを意図して説明される。代替の実施形態は、本開示を読んだ後、及び読んだからこそ、本開示が読者に明らかになる。前述を実装するための代替手段は、以下の特許請求の範囲から逸脱することなく完成させることができる。ある特定の特徴及びサブ組み合わせは、有用であり、他の特徴及びサブ組み合わせを参照することなく使用され得、特許請求の範囲内で企図される。本発明は、添付の図面図に示された実施形態を参照して説明されたが、特許請求の範囲に記載された本発明の範囲から逸脱することなく、本明細書において等価物を採用し、置換することができることに留意されたい。
【0092】
このように本発明の様々な実施形態を説明してきたが、新規なものとして特許請求され、特許用語によって保護されることが望まれるものには、以下のものが含まれる。
【国際調査報告】