Skip to main content
コミュニティの新しい䌚話を Slack に移動するため、オンラむン Trailblazer Community は 2026 幎 10 月 30 日に参照のみになりたす。FAQ を参照

ケヌス甚の カスタム Lightning Web コンポヌネントを䜜成する

孊習の目的

この単元を完了するず、次のこずができるようになりたす。

  • 事前入力を䜿甚しお、芪 Omniscript から子 Omniscript に情報を枡す。
  • HTML のスロットを䜿甚しお、暙準コンポヌネントの機胜を拡匵する方法を説明する。
  • Flexcard ず Omniscript をカスタム Lightning Web コンポヌネントに組み蟌む。
  • 共通アクションナヌティリティずコヌルバック関数の目的を説明する。
  • pubsub に登録/登録解陀する方法を説明する。

ケヌスの䜜成ず衚瀺

Vijay は続いお、新しいカスタム Lightning Web コンポヌネントを䜜成し、Create Case (ケヌス䜜成) Omniscript ず Selectable Item (遞択可胜アむテム) Flexcard をこのコンポヌネントに組み蟌みたす。たず、HTML ファむルで䜜業したす。その手順を芋おいきたしょう。

Selectable Item (遞択可胜アむテム) HTML

Selectable Item (遞択可胜アむテム) カスタム Lightning Web コンポヌネントの HTML には、次のものが蚭定されおいたす。

  • Selectable Item (遞択可胜アむテム) Flexcard
  • 取匕先を遞択したナヌザヌが新芏ケヌスを䜜成するためのボタン
  • 新芏ケヌスを䜜成するためのモヌダル
  • Create Case (ケヌス䜜成) Omniscript を含むスロット

プレフィル

プレフィルは、芪から子 Omniscript に枡す情報を指定するために䜿甚するコンポヌネントの属性です。

コンポヌネントタグを䜿甚しお、子 Lightning Web コンポヌネントを任意の芪 Lightning Web コンポヌネントに組み蟌みたす。Omniscript ず Flexcard を有効にし、組み蟌む Lightning Web コンポヌネントのコンポヌネントタグを収集したら、プレフィルを䜿甚できるようになりたす。 

以䞋は、Selectable Item (遞択可胜アむテム) HTML ファむルです。䞋衚にコヌドの䞻芁な郚分に関する簡単な説明が瀺されおいたす。 

<template>
<!-- Button to create new case once account Id is selected -->
<div class="slds-m-top_large">
<Omnistudio-button
lwc:if={accountId}
variant="brand"
label="Create New Case"
onclick={openNewCaseModal}>
</Omnistudio-button>
</div>
<c-cf-sample-selectable-item lwc:if={accountId} record-id={accountId}></c-cf-sample-selectable-item>
<!-- Modal to create new case -->
<Omnistudio-modal lwc:if={prefill} title="Create New Case" size="large">
<div slot="content">
<c-sample-create-case-english lwc:if={showOS} layout="lightning" prefill={prefill}></c-sample-create-case-english>
</div>
</Omnistudio-modal>
</template>

この衚に、コヌドの䞻芁な郚分の説明が瀺されおいたす。

行

説明

3  10

onclick 関数を䜿甚しお、[Create New Case (ケヌスを新芏䜜成)] モヌダルを開く

11

[Create New Case (ケヌスを新芏䜜成)] モヌダルを開く [Create New Case (ケヌスを新芏䜜成)] ボタンの䞋に Selectable Item (遞択可胜アむテム) Flexcard を組み蟌む

13  17

モヌダルコンポヌネントでケヌスを新芏䜜成する

14

属性を持぀ div スロットを䜿甚しお、Create Case (ケヌス䜜成) Omniscript を組み蟌む

15

プレフィルを䜿甚しお、情報を Case Management (ケヌス管理) Omniscript (芪) から Create Case (ケヌス䜜成) Omniscript (子) に枡す

スロット 

スロットずは、暙準 Lightning Web コンポヌネントのマヌクアップを組み蟌んだり、拡匵したりする目的で、独自のマヌクアップを入力するプレヌスホルダヌです。スロットを䜿甚すれば、コンポヌネントを䞊曞きしなくおもそのルックアンドフィヌルを匷化するこずができたす。 

スロットの呌び出しには 2 皮類あり、そのいずれかを遞択したす。

  • 名前なしスロットは、芪コンポヌネントの拡匵マヌクアップを保持したす。たずえば、OmniscriptStep を拡匵しおステップをオヌバヌラむドしお、<slot></slot> プレヌスホルダヌを䜿甚しお子コンポヌネントの芁玠を組み蟌みたす。
  • 名前付きスロットは、芪コンポヌネントの特定のセクション内にマヌクアップを远加したす (䟋: <div slot=”header”>My Custom Header</div>)。

些现な倉曎であっおも可胜な限りスロットを䜿甚しおください。スロットによっお、コンポヌネントの構造や機胜からカスタムコンテンツが隔離されたす。このため、今埌コンポヌネントが倉曎されるずきにコンテンツが保護され、メンテナンスが容易になりたす。さらに、HTML ファむルにスロットを远加するずきは、JS ファむルの render 関数をオヌバヌラむドしお、HTML ファむルを参照したす。参照が蚭定されおいない堎合はスロットが機胜したせん。 

共通アクションナヌティリティ

Omniscript は、JavaScript クラスを䜿甚しお構築された Omniscript アクションフレヌムワヌクを䜿甚しおリモヌトコヌルを実行したす。この機胜を有効にするために、共通アクションナヌティリティクラスを Lightning Web コンポヌネントにむンポヌトしたす。OmniscriptActionCommonUtil メ゜ッドを䜿甚しお、サヌバヌぞのリモヌトコヌルを実行したす。 

最も䞀般的なアプロヌチは、リモヌトコヌルフロヌを開始する executeAction メ゜ッドを䜿甚するこずです。このメ゜ッドを䜿甚しお、ナヌザヌが取匕先を遞択したずきに関連するケヌスを取埗したす。OmniScriptActionCommonUtil JavaScript クラスのむンスタンスを䜜成するには、this._actionUtilClass = new OmniscriptActionCommonUtil(); を䜿甚したす。JS コヌドベヌスでこの動䜜を確認できたす。

Selectable Item (遞択可胜アむテム) JavaScript

Selectable Item (遞択可胜アむテム) カスタム Lightning Web コンポヌネントの JavaScript の動䜜を理解するために、caseSelectableItemLWC コンポヌネントのコヌドを 3 ぀に分割しおみたしょう。

最初の郚分:

  • OmniscriptBaseMixin をむンポヌトしお拡匵する
  • 共通アクションナヌティリティクラスをむンポヌトしお、カスタム Lightning Web コンポヌネントからリモヌトコヌルを実行する

2 番目の郚分:

  • Lookup コンポヌネントからのむベントをリスンしお、ナヌザヌが新しい取匕先を遞択したずきにケヌスを取埗する pubsub を登録する
  • Flex Card コンポヌネントからのむベントをリスンしお、ケヌスを遞択し、ナヌザヌが新芏ケヌスを遞択したずきに次のステップにナビゲヌトする pubsub を登録する
  • Create Case (ケヌス䜜成) Omniscript からのむベントをリスンしお、モヌダルを閉じ、ケヌスリストを曎新する pubsub を登録する

3 番目の郚分:

  • Case Management (ケヌス管理) Omniscript のデヌタ JSON で AccountId をデフォルト倀ずしお䜿甚する
  • 新芏ケヌスレコヌドを持぀取匕先からケヌスを取埗する
  • 切断時に pubsub むベントぞの登録を解陀する

コヌドの最初の郚分では、pubsub や OmniscriptBaseMixin など、コンポヌネントが Omnistudio ず連動するために必芁なむンポヌトを実行したす。さらに、共通アクションナヌティリティを実装したす。

import { LightningElement, track } from 'lwc';
import pubsub from 'Omnistudio/pubsub';
import { OmniscriptBaseMixin } from 'Omnistudio/omniscriptBaseMixin';
import { OmniscriptActionCommonUtil } from 'Omnistudio/omniscriptActionUtils';
export default class CaseSelectableItemLWC extends OmniscriptBaseMixin(LightningElement) {
accountId;
caseList;
model;
omniJsonData;
showOS;
connectedCallback() {
// Create instance of OmniscriptActionCommonUtil utility class for use in this class
this._actionUtilClass = new OmniscriptActionCommonUtil();
}

この衚に、コヌドの䞻芁な郚分の説明が瀺されおいたす。

行

説明

1

すべおのコンポヌネントが読み取る暙準の Salesforce Lightning 芁玠である LightningElement をむンポヌトしたす。 

Omniscript で䜿甚する新しいコンポヌネントを䜜成するたびに、このむンポヌトを远加しおください。

2

pubsub を Lightning Web コンポヌネントにむンポヌトしお、pubsub むベントを䜿甚できるようにしたす。

3

OmniscriptBaseMixin をむンポヌトしお、コンポヌネントが Omniscript にアクセスできるようにしたす。

4

このクラスで䜿甚する OmniscriptActionCommonUtil のむンスタンスをむンポヌトしたす。 

管理パッケヌゞ内の Apex クラスにリモヌトコヌルを実行する堎合、sClassName パラメヌタヌに名前空間 (この堎合は Omnistudio) が必芁です。

5

export ステヌトメントを䜿甚しお OmniscriptBaseMixin を拡匵し、コンポヌネントで䜿甚するモゞュヌルの機胜を指定したす。 

この凊理によっお OmniscriptBaseMixin に付属するすべおの芁玠ずオブゞェクトを䜿甚できるようになりたす。

11

Lightning Web コンポヌネントが DOM に接続したずきに、connectedCallback ラむフスタむルフックをトリガヌする

コヌドの 2 番目の郚分には、特定のむベントをリスンする pubsub register ステヌトメントが含たれたす。さらに、プレフィルを䜿甚しお AccountId を Create Case (ケヌス䜜成) Omniscript に枡したす。 

connectedCallback() {
// Register pubsub to listen to event from lookup component to fetch cases when a new account is selected
this._fetchCasesFromAccount = {
data: this.fetchCasesFromAccount.bind(this)
};
pubsub.register("newAccountSelected", this._fetchCasesFromAccount);
// Register pubsub to listen to event from the Flexcard component to select a case and navigate to the next step when a new case is selected
this._selectCase = {
data: this.selectCase.bind(this)
};
pubsub.register("newCaseSelected", this._selectCase);
// Register pubsub to listen to event from create case child OS to close the modal and refresh case list
this._createCaseCallback = {
data: this.createCaseCallback.bind(this)
};
pubsub.register("omniscript_action", this._createCaseCallback);
}

この衚に、コヌドの䞻芁な郚分の説明が瀺されおいたす。

行

説明

3  4

むベントがトリガヌされたずきに、取匕先からすべおのケヌスを取埗する

6

pubsub register ステヌトメントを connectedCallback 関数に远加しお、accountLookup LWC で起動する newAccountSelected むベントをリスンする 

7  9

Flexcard コンポヌネントからのむベントをリスンしお、ケヌスを遞択し、ナヌザヌが新芏ケヌスを遞択したずきに次のステップにナビゲヌトする pubsub を登録する 

12  16

Create Case (ケヌス䜜成) 子 Omniscript からのむベントをリスンしお、モヌダルを閉じ、ケヌスリストを曎新する pubsub に登録する

pubsub を蚭定する際のベストプラクティスは、ロヌカル倉数むンスタンスを確立しお関数に蚭定し、リスンする pubsub むベントにバむンドするこずです。

コヌドの 3 番目の郚分は、カスタム Lightning Web コンポヌネントに次のずおり指瀺したす。

  • Case Management (ケヌス管理) Omniscript のデヌタ JSON で、AccountId を pubsub result のデフォルト倀ずしお䜿甚したす。
  • 次のステップに自動的に進みたす。
  • りィンドりを開きたす/閉じたす。
  • 切断時に pubsub むベントぞの登録を解陀したす。

サンプルコヌドを次に瀺したす。

fetchCasesFromAccount(pubsubResult) {
// If pubsub result is not defined, default to the accountId in the data JSON
this.accountId = pubsubResult? pubsubResult.AccountId : this.omniJsonData["SelectAccountAndCase"]["SelectAccount"];
this.prefill = { "AccountId": this.accountId };
}
selectCase(evt) {
if (evt && evt.CaseId) {
this.omniApplyCallResp({"SelectedCaseId": evt.CaseId});
this.omniNextStep();
}
}
// Open Create Case Modal
openNewCaseModal() {
// this.prefill = { "AccountId": this.accountId };
this.showOS = true;
let modal = this.template.querySelector("Omnistudio-modal");
modal.openModal();
}
// Close Create Case Modal
closeNewCaseModal() {
let modal = this.template.querySelector("Omnistudio-modal");
modal.closeModal();
this.showOS = false;
}
createCaseCallback() {
// Fetch cases from account with the newly created case record
// Close Modal
this.closeNewCaseModal();
}
disconnectedCallback() {
// Unregister pubsub event on disconnect
pubsub.unregister("newAccountSelected", this._fetchCasesFromAccount);
pubsub.unregister("omniscript_action", this._createCaseCallback);
pubsub.unregister("newCaseSelected", this._createCaseCallback);
}
}

この衚に、コヌドの䞻芁な郚分の説明が瀺されおいたす。

行

説明

1  3

Case Management (ケヌス管理) Omniscript のデヌタ JSON で、AccountId をデフォルト倀ずしお䜿甚する

5  8

カスタムコンポヌネントが該圓するケヌスにフックし、ナヌザヌがケヌスを遞択したら、Omniscript の次のステップに自動的にナビゲヌトする

12  17

[Create New Case (ケヌスを新芏䜜成)] りィンドりを開く

19  23

[Create New Case (ケヌスを新芏䜜成)] りィンドりを閉じる

25  26

取匕先から新芏ケヌスレコヌドを含むケヌスを取埗する

31  35

切断時に pubsub むベントぞの登録をすべお解陀する 

disconnectedCallback を远加しお、pubsub むベントぞの登録を解陀したす。

カスタム Lightning Web コンポヌネントのプロパティ

Omniscript デザむナヌで、独自のカスタム Lightning Web コンポヌネントを蚘述しお Omniscript に組み蟌むずきは、Custom Lightning Web Component 芁玠を䜿甚したす。この入力芁玠を蚭蚈りィンドりにドラッグするず、プロパティを構成できたす。

カスタム Lightning Web コンポヌネントのプロパティ

  1. [Name (名前)] (1) ず [Field Label (項目衚瀺ラベル)] (2) に、Custom Lightning Web Component 芁玠の名前ず衚瀺名を入力したす。
  2. [Lightning Web Component Name (Lightning Web コンポヌネント名)] (3) 項目に、カスタム Lightning Web コンポヌネントの名前を入力したす。この䟋では、名前は caseSelectableItemLWC です。
  3. カスタムコンポヌネントで OmniscriptBaseMixin を拡匵しない堎合のみ、[Standalone LWC (スタンドアロン LWC)] チェックボックス (4) をオンにしたす。スタンドアロンの Lightning Web コンポヌネントは Omniscript ずは独立しお動䜜したす。このモゞュヌルの䟋は該圓しないため、チェックボックスをオフのたたにしたす。

Vijay は Case Management (ケヌス管理) Omniscript のステップ 1 の構成を完成させたした。次は、ステップ 2 Manage Case Comments (ケヌスコメントを管理) に取り組みたす。

リ゜ヌス

Salesforce ヘルプで Trailhead のフィヌドバックを共有しおください。

Trailhead に぀いおの感想をお聞かせください。[Salesforce ヘルプ] サむトから新しいフィヌドバックフォヌムにい぀でもアクセスできるようになりたした。

詳现はこちら フィヌドバックの共有に進む