Anyflow SDK v0.13.0
自社プロダクトにAnyflowを組み込む際に使用するフロント SDK のドキュメントです。
最終更新
自社プロダクトにAnyflowを組み込む際に使用するフロント SDK のドキュメントです。
最終更新
npm を使用して SDK をインストールするには次のコマンドを実行します。
npm を使用していない場合はからダウンロードして JavaScript ファイルを直接使用することも出来ます。参考:
AnyflowSDK のインスタンスを取得する前に、 AnyflowSDK を init
関数で初期化する必要があります。
init
関数の引数には、 AnyflowSDK が JWT を取得するために使用する非同期関数を指定します。
./path/to/your/jwt/endpoint
には、自社プロダクトに実装したJWTエンドポイントを設定します。
(参考: )
init に指定する関数は、必ず実行ごとに異なる JWT を返却する必要があります。 この JWT は内部でアクセストークンに交換されてから使用されますが、セキュリティ上の理由から、アクセストークンの発行には同じ JWT は2回以上使用できないようになっています。 SDK はアクセストークンの有効期限切れなどの理由によりこの関数を複数回実行することがあります。
SDK の初期化は、後述する destroy
を呼び出すまで、2回実行することはできません。すでに初期化している状態でもう一度初期化しようとすると、 sdk_already_initialized
エラーがスローされます。
init
関数の第2引数にオプションを指定できます。全てのオプションの指定は任意です。
env
デプロイ環境のユニーク名を指定します。指定しなければデフォルトデプロイ環境が使用されます。
undefined
AnyflowSDK では、有効なインスタンスは1つのみ存在します。 SDK を初期化すると、 instance
プロパティから有効な AnyflowSDK のインスタンスを取得することができるようになります。
AnyflowSDK を初期化すると、ソリューションウィザードを表示するための iframe と通信するために window にメッセージハンドラが設定されます。
SDK インスタンスが不要になれば、これらのメッセージハンドラが残ったままにならないように、 SDK インスタンスを破棄することができます。
SDK インスタンスを破棄するには、 AnyflowSDK の destroy
関数を実行します。
destroy
を実行すると、それまでに使用していた SDK インスタンスはもう使用できなくなります。破棄した SDK インスタンスを使用しようとすると、 sdk_already_destroyed
エラーがスローされます。 SDK インスタンスの isDestroyed
プロパティによって、SDK インスタンスが破棄されているかどうかを確認できます。
もう一度 SDK インスタンスが必要になった場合は、改めて init
関数で AnyflowSDK を初期化してください。
getSolution
メソッドを使用して特定のソリューションの情報 (Solution
) を取得するか、 getSolutions
メソッドを使用して現在使用可能なすべてのソリューションをリストで取得することができます。デプロイされていないソリューションは使用可能ではないため取得できません。
取得した Solution
オブジェクトは不変です。 SDK を使用してソリューションの有効状態を変更しても、すでに取得してあった Solution
オブジェクトの値が変更されることはありません。最新の値を取得するには、もう一度 getSolution
メソッドで取得し直してください。
ソリューションの状態を取得することで、エンドユーザーのソリューションの利用状況に応じて UI の表示を変更する等を実現できます。
ソリューションの状態は、取得した Solution
オブジェクトの state
プロパティからアクセスできます。
SolutionState
の値は、次のいずれかです:
not_installed
まだソリューションがインストールされていません。
enabled
ソリューションが有効です。
disabled
ソリューションはインストールされていますが、有効にされていません。
ソリューションをインストールするには、ソリューションウィザードと呼ばれる画面を表示し、ユーザーに各種設定項目を入力してもらう必要があります。
ソリューションウィザードの UI は Anyflow によって提供されるため、まずは createWizard
メソッドを使用して SolutionWizard
をインスタンス化します。 createWizard
にはソリューションウィザードを表示させたい iframe を指定します。
iframe や SolutionWizard
のインスタンスはソリューションごとに別々のものを使用することも、複数のソリューションで一つのものを共有して使用することもできます。
ソリューションウィザードを指定した iframe に表示させるには、 SolutionWizard
オブジェクトの load
メソッドを使用します。 load
メソッドにはソリューションウィザードを表示したいソリューションの ID を指定します。
iframe 内に表示したソリューションウィザードを破棄するには、 unload
メソッドを実行します。ソリューションウィザードが完了またはキャンセルされたタイミングで unload
することを推奨します。
ソリューションをアンインストールにするには、 sdk
の uninstallSolution
メソッドを実行します。ソリューションは再度インストールされるまで実行できなくなります。
ソリューションウィザードが完了したりユーザーによってキャンセルされた時に処理を実行するには、 SolutionWizard
オブジェクトに対して addListener
メソッドで SolutionWizardListener
を設定します。
リスナが不要になった場合は removeListener
メソッドで削除できます。
インストールしたソリューションの設定を変更するには、ソリューションをインストールした時と同様、ソリューションウィザードを使用します。
インストール済みの状態でソリューションウィザードを表示すると、ユーザーが以前に設定した内容が入った状態のソリューションウィザードが表示されます。もう一度ウィザードを完了させることで、ソリューションの設定が変更できます。
ソリューションウィザードを iframe に読み込むには、インストール時と同じように、 SolutionWizard
オブジェクトの load
メソッドを実行します。
ソリューションを有効にするには sdk
の enableSolution
メソッドを、無効にするには disableSolution
メソッドを実行します。
ユーザーの操作に応じてソリューションを手動実行するには、 SDK の runSolution
メソッドを実行します。
runSolution
メソッドで実行することができるのは、Clickトリガー(手動実行トリガー)が指定されているソリューションのみです。手動実行できないソリューションで runSolution
を実行すると、 AnyflowError
がスローされます。 Solution
オブジェクトの runnable
プロパティによって、手動実行トリガーが指定されているかどうかを確認できます。
runSolution
の戻り値として取得できる Promise を解決すると得られるのは、ソリューションの実行インスタンスを表す Job
オブジェクトです。
Job
オブジェクトも Solution
オブジェクトと同じく不変で、実行状態が変更されてもすでに取得済みの Job
オブジェクトの値が変更されることはありません。
ソリューションの実行状態は Job
オブジェクトの state
プロパティを読み込むことで確認できます。
running
この Job はまだ実行中です。
succeeded
この Job の実行は正常に完了しました。
failed
この Job の実行は失敗しました。
Job
オブジェクト自体は不変のため、実行状態が変更されてもそのオブジェクトは変更されません。
ソリューションの実行状態が変更された時に新しい Job
オブジェクトを取得するには、 SDK の observeJob
メソッドを実行してジョブの変更を監視する必要があります。
observeJob
に指定する JobCallback
はジョブが変更された時に呼び出されます。 JobCallback
の第一引数は変更内容を表す JobEvent
で、第二引数は変更後の値を持った Job
オブジェクトです。
監視を終了するには、 SDK の unobserveJob
メソッドを実行します。
ソリューションの実行履歴を表示するには、 SolutionWizard
オブジェクトの loadHistory
メソッドを使用します。 loadHistory
メソッドには実行履歴を確認したいソリューションの ID を指定します。
loadHistory
メソッドを実行すると、ソリューションウィザードを作成するときに指定した iframe にソリューションの実行履歴が読み込まれます。
iframe 内に表示したソリューションの実行履歴を破棄するには、 SolutionWizard
オブジェクトの unload
メソッドを実行します。
ソリューションの実行履歴を閉じると canceled
イベントが発行されるので、そのタイミングで unload
することを推奨します。
ソリューションの実行履歴を iframe に表示するのではなく、データとして直接 SDK から取得することもできます。
データとして取得するには、SDK の getJobs
メソッドを使用します。
getJobs
の戻り値の Promise が解決すると、ソリューションの実行インスタンスを表す Job
オブジェクトの一覧が得られます。実行履歴は直近の20件まで取得できます。
取得にはタイムラグが発生する場合があります。
連続的にgetJobs
を実行する場合は、5~10秒程度の間隔を空けて実行してください。
Job
オブジェクトも Solution
オブジェクトと同じく不変で、実行状態が変更されてもすでに取得済みの Job
オブジェクトの値が変更されることはありません。
この例では、user_created
というキーを持つ My Event を、 payload
変数の値をペイロードとして送信しています。
payload
には送信する My Event で設定済みのスキーマに合う構造のデータを指定してください。
スキーマに合わないペイロードを指定しても、このメソッドはエラーを返しません。
My Event のスキーマが求める値がペイロードに含まれていない場合、ソリューション内ではその変数の値は None
になります。
たとえば、この例の My Event に { "email": "[email protected]" }
をペイロードとして送信すると、ソリューション内の payload.name
や payload.is_admin
という変数の値は None
になります。
次の場合、このメソッドの返す Promise は my_event_not_triggered
エラーで reject されます。
指定した My Event が見つからない場合
指定した My Event を使用するソリューションが存在しない場合
指定した My Event を使用するソリューションをエンドユーザーがインストールしていない場合
指定した My Event を使用するソリューションをエンドユーザーが無効にしている場合
エンドユーザーがソリューションをインストールすると、completedのイベントが呼び出され、リスナの第三引数 solutionInstanceId が渡ってきます。 solutionInstanceId はでも取得できます。
フロントエンドから直接 を送信するには、sendMyEvent
メソッドを使用します。