Appearance
Are you an LLM? You can read better optimized documentation at /features/notebook/sharing/signed-embed/use-case.md for this page in Markdown format
ユースケース
小売業支援 SaaS を想定した、署名付き埋め込みの設計例です。パラメータの役割の要約は マルチテナント を、公開・設定は 署名付き埋め込み を、組み込み手順は 組み込み手順 を参照してください。
コード例は Codatum Embed SDK の README も参照してください。
シナリオ
小売業の店舗運営を支援する SaaS に、店舗ごとの売上や KPI のダッシュボードを埋め込むケースを想定します。店舗マネージャーやエリアマネージャーがログインしたとき、自分の店舗に関連する情報だけを表示します。
ノートブックのパラメータ
ソースとなるノートブックには、次のパラメータがあるものとします。パラメータ名は例です。必須の名前ではありません。
tenant_id- ログイン中のユーザーが所属するテナント ID
- テキスト入力
store_id- 表示対象の店舗 ID
- テキスト選択。選択肢は
tenant_idで指定されたテナント内の店舗 ID
date_rangeproduct_category- 集計対象の商品カテゴリ
- テキスト複数選択。未選択時は全カテゴリを表示するよう SQL 側で条件指定
設定例A: 署名付き埋め込みのフォームを利用する場合
前提となるノートブックの設計
tenant_idを固定し、アクセス可能なデータを制限します- データを抽出する SQL には、
tenant_idをフィルタ条件として必ず含める - 店舗データの抽出でも、
store_idだけでなくtenant_idを条件に含め、別テナントの店舗データは抽出できないようにします
- データを抽出する SQL には、
date_rangeとproduct_categoryは、任意の値を指定できる設計とします
パラメータの設定
tenant_id: サーバーサイドパラメータの固定値store_id: サーバーサイドパラメータの初期値date_range: クライアントサイドパラメータproduct_category: クライアントサイドパラメータ
表示までの流れ
- サーバー側でトークンを発行します
- ユーザーの所属する
tenant_idを固定値として指定します tenant_idに紐づく店舗のうち、初期表示するstore_idを初期値として指定します
- ユーザーの所属する
- フロントエンドで初期描画します
- ユーザーがダッシュボードを操作します
- ユーザーは入力フォームから
store_id、date_range、product_categoryを変更できます
- ユーザーは入力フォームから
設定例B: 埋め込み先アプリ側でパラメータを管理する場合
前提となるノートブックの設計
設定例A と同様です。
パラメータの設定
tenant_id: サーバーサイドパラメータの固定値store_id: クライアントサイドパラメータdate_range: クライアントサイドパラメータproduct_category: クライアントサイドパラメータ
表示までの流れ
- サーバー側でトークンを発行します
- ユーザーの所属する
tenant_idを固定値として指定します
- ユーザーの所属する
- フロントエンドで初期描画します
displayOptions.hideParamsFormを有効にし、パラメータフォームを非表示にしますtokenProviderの戻り値で、埋め込み先アプリが管理するstore_id、date_range、product_categoryをparamsに含める
- ユーザーがダッシュボードを操作します
- 埋め込み先アプリ側の条件変更で表示を更新する場合は、次の手順とします
- 初期描画で使ったトークンを再利用し、更新したクライアントサイドパラメータ全件を
paramsに含めて埋め込みを再読み込みする(reloadなど)- 差分ではなく、全件(
store_id、date_range、product_category)を送る - 同一のユーザーが同一の固定値を使う場合、トークンは有効期限内なら再利用できます
- 差分ではなく、全件(
設定例C: サーバーサイドパラメータの固定値を更新する場合
前提となるノートブックの設計
tenant_idとstore_idの両方を固定し、アクセス可能なデータを制限します- 設定例A と異なり、
store_idもサーバー側で固定する必要がある場合を想定します
- 設定例A と異なり、
date_rangeとproduct_categoryは、設定例A と同様に任意の値を指定できる設計とします
パラメータの設定
tenant_id: サーバーサイドパラメータの固定値store_id: サーバーサイドパラメータの固定値date_range: クライアントサイドパラメータproduct_category: クライアントサイドパラメータ
表示までの流れ
- サーバー側でトークンを発行します
- ユーザーの所属する
tenant_idと、初期表示するstore_idを固定値として指定します
- ユーザーの所属する
- フロントエンドで初期描画します
tokenProviderの戻り値で、次のクライアントサイドパラメータをparamsに含めるdate_rangeは相対日付の再計算のため、デフォルト値を初期値として利用する設定にする(相対日付)product_categoryは空配列を初期値として指定します
- ユーザーがダッシュボードを操作します
store_idは固定値のため、入力フォームからは変更できません。埋め込み先アプリ側で店舗変更 UI を用意します- 店舗を変えて再描画する場合は、新しい
store_idでトークンを再発行し、新しいトークンとクライアントサイドパラメータ全件を送る- 固定値の変更にはトークンの再発行が必要
- クライアントサイドパラメータは差分ではなく全件(
date_range、product_category)を送る - 再描画前にユーザーが変更した値を保持したい場合は、Embed SDK の
paramChangedイベント(React / Vue ではonParamChanged)で記録し、再送時に含める
date_rangeとproduct_categoryは、入力フォームから変更できます