Web 埋め込み可能グローバルコードとコンポーネントコードで利用可能な関数
ServiceNow Embeddables API を使用すると、 ServiceNow コンポーネントを外部 Web サイトに統合できます。これらの関数は、初期化、認証、コンポーネント管理、およびイベント処理に不可欠な機能を提供します。
グローバルコード
埋め込みスクリプトには、グローバルコードの一部として次のメソッドが含まれています。次の詳細は、それらがどのように機能するかを理解するのに役立ちます。
- Init メソッド
-
- 目的: 構成設定を使用して埋め込み可能フレームワークを初期化します。
- 使用パターン:
await init({ theme: 'fad87d2ca304121029a4d1aed31e610f', //sys_id of theme, baseURL: 'https://demo.servicenow.com', authCallback: getTokenCallBack, // Authentication callback function locale: 'ja', // Language/locale for components interceptSessionTimeout: true, // Handle session timeouts (default: true) // cacheComponents: [ //Pre-cache component for performance "sn-embedx-case-form", "sn-embedx-case-list", "sn-embedx-case-view" ] }); - パラメーター:
authCallback(関数):現在のユーザーの認証トークンを返します。baseURL(文字列): ServiceNow インスタンスのベース URL。locale(文字列、オプション):認証されたユーザーの言語設定を ServiceNow で更新する言語/ロケール設定 (「en」、「es」など)。theme(文字列):適用するテーマのsys_id。interceptSessionTimeout(ブール値、オプション):セッションタイムアウト処理を有効にします。デフォルトでは true に設定されています。cacheComponents(Array、オプション):事前キャッシュするコンポーネントタグ名のリスト。
- 主な動作:
- 他の埋め込み可能関数の前に呼び出す必要があります。
- 必要なリソースをロードし、接続を確立します。
- オプションでセッション管理用のインターセプターを設定します。
- ロケールが指定されている場合、認証されたユーザーの言語設定を更新します。
- パフォーマンスを向上させるために、指定されたコンポーネントを事前にキャッシュします。
- ログイン()
-
- 目的: ServiceNow インスタンスでユーザーを認証します。
- 使用パターン:
await login(); - 主な動作:
- 初期化中に指定された authCallback 関数を呼び出します。
- 返されたトークンで認証:成功時に SN_EMBEDDABLES_LOGIN_SUCCESS イベントをディスパッチします。
- 前提条件:init
()は、最初に有効な authCallback で呼び出す必要があります - authCallback 関数は有効な認証トークンを返す必要があります。
- ログアウト()
-
- 目的:ユーザーをセッションからログアウト ServiceNow 。
- 使用パターン:
await logout(); - 主な動作:成功時にイベントをディスパッチ SN_EMBEDDABLES_LOGOUT_SUCCESS 。
- 前提条件:最初に有効な baseURL を使用して
init()を呼び出す必要があります - ユーザーがログインしている必要があります。
コンポーネントコード
埋め込みスクリプトには、コンポーネントコードの一部として次のメソッドが含まれています。次の詳細は、それらがどのように機能するかを理解するのに役立ちます。
- getEmbeddables
-
- 目的: 指定された埋込み可能なコンポーネントをロードして初期化します。
- 使用パターン:
// Load components by providing array of component tag names getEmbeddables(["sn-embedx-case-view", "sn-embedx-case-form"]); - パラメーター:
components(Array):ロードするコンポーネントタグ名のアレイ
- setProperties(componentElement, properties)
-
- 目的:埋め込み可能なコンポーネントインスタンスのプロパティを設定します。
- 使用パターン:
const caseViewComponent = document.querySelector('sn-embedx-case-view'); setProperties(snEmbedxCaseView,{ table:sn_customerservice_case, sysId:221a69cd3b411300b5c42479b3efc480, playbookExperience:playbookExperience, selectedPlaybookContextId:85d9f349ff766210e9d3ffffffffffce, selectedStageContextId:9da56770ff7a2210e9d3ffffffffffd9, selectedActivityContextId:5d8bf1805d8bf8205d8b54d05d8be070 }); - パラメーター:
componentElm(HTMLElement): コンポーネントの DOM 要素 - properties (Object): 設定するプロパティのキーと値のペア。
- setEvents (componentElement、eventHandlers)
-
- 目的: イベントリスナーを埋込み可能なコンポーネントにアタッチします。
- 使用パターン:
const caseViewComponent = document.querySelector('sn-embedx-case-view'); const eventHandlers = {' 'SN_EMBEDX_CASE_VIEW#COMPONENT_READY': (e) => { console.log('Component is ready and usable'); }, 'SN_EMBEDX_CASE_VIEW#COMPONENT_ERROR': (e) => { const { errorMessage, errorType } = e.detail.payload; console.log('Component error:', errorMessage, errorType); }, }; setEvents(caseViewComponent, eventHandlers); - パラメーター:
componentElm(HTML 要素): コンポーネント DOM 要素 - eventHandlers (オブジェクト): キーと値のペア。キーはイベント名で、値はハンドラー関数です。
主な考慮事項
これを効果的に実装するための重要な考慮事項を次に示します。
- 最初に init() を呼び出すようにしてください。他のすべての機能の基礎を設定します。
- コンポーネントライフサイクルのイベントハンドラーを使用します。また、コンポーネントの準備状況とエラーも監視します。
- 頻繁に使用するコンポーネントをキャッシュします。パフォーマンスを向上させるには、init() で cacheComponents を使用します。
- 実装