ウィジェットのトラブルシューティング ガイド

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:6分
  • 次のツールを使用して、カスタム サービスポータルウィジェットの予期しない動作を調査および解決します。

    複雑さの軽減
    トラブルシューティングするウィジェットとは無関係のウィジェットを非アクティブ化し、エラーや予期しない動作を引き起こしている可能性があるページの部分を切り分けます。ウィジェット レコードでアクティブ フィールドを false に設定し、ページでウィジェットを非表示にして関連付けられたスクリプトが実行されないようにします。
    ブラウザー開発者コンソールの使用

    サポートされているすべてのデスクトップ ブラウザーには、開発ツールが組み込まれています。ブラウザー開発者ツールにアクセスし、クライアント側の JavaScript でスローされたコンソールメッセージとエラーを表示します。以下で詳しく説明するログ ツールの多くは、このコンソールに情報を出力します。

    パフォーマンスの問題が発生した場合は、JavaScript コンソールをチェックして、エラー、多数の HTTP 要求、または解決に時間がかかる HTTP 要求がないかどうかを確認します。コンソールを使用して、ロードの遅いウィジェットを特定できます。詳細については、Now Support ナレッジベースの「 How to identify a slow widget on a page (ページ上の遅いウィジェットの識別方法) [KB0744521]」 の記事を参照してください。

    パフォーマンスの問題の原因の特定

    次のヒントは、ポータルのパフォーマンスの問題の原因を特定するのに役立ちます。

    • 両方のインターフェイスの機能を比較して、問題がポータルに、またはプラットフォーム全体に関連しているかどうかを判断します。プラットフォームのパフォーマンスの問題の詳細については、「 プラットフォームのパフォーマンス」を参照してください。
    • 問題がポータル全体に影響するか、特定のページに影響するかを確認します。ポータルのすべてのページが遅い場合は、ヘッダーメニューのスクリプト化されたメニューアイテム、または大きなフォントや画像ファイルを含むテーマが原因であるかどうか確認します。特定のページが遅い場合は、ブラウザー開発者コンソールを使用して、原因となっているウィジェットを特定します。
    • ログ [syslog] テーブルで、速度低下の原因となる大きな JSON オブジェクトに関連する警告がないか確認します。これらの警告が速度低下を招くアクションとともに表示される場合は、ウィジェットが使用しているデータが多すぎることを示しています。

    詳細については、Now Support ナレッジベースの 「 Six common performance pitfalls in Service Portal and how to avoid them (Service Portal の 6 つの一般的なパフォーマンスの落とし穴とその回避方法) [KB0634588]」 を参照してください。

    ウィジェットのコンテキストメニューを使用した情報とオプションへのアクセス
    Ctrl キーを押しながらウィジェットを右クリックし、ウィジェットの構成オプションにアクセスします。スコープとスコープ データ オブジェクトをブラウザー コンソールに出力するオプションもあります。このメニューの詳細については、「 ポータルウィジェットの使用」を参照してください。
    スクリプト メソッドを使用したデバッグ出力のキャプチャ

    いくつかのメソッドを使用して、サーバーおよびクライアント側のコード内でデバッグ情報を出力できます。

    表 : 1. スクリプト化されたデバッグ メソッド
    手法 利用できる場所 説明
    console.log() サーバーとクライアント ブラウザー開発者コンソールに出力を記録します。
    $sp.log() サーバー ログインしたユーザーが sp_admin または admin ロールを持っている場合、サービス ポータルのログ エントリ [sp_log] テーブルに出力を記録します。
    gs.log() サーバー ログ [syslog] テーブルに出力します。
    注:
    gs.log は syslog テーブルにレコードを作成します。大量に使用すると、パフォーマンスに悪影響を及ぼす可能性があります。
    gs.warn() サーバー ログ [syslog] テーブルに警告レベルの出力を生成します。
    gs.error() サーバー ログ [syslog] テーブルにエラー レベルの出力を生成します。
    gs.addInfoMessage() サーバー ブラウザー ウィンドウの上部に緑の情報メッセージを表示します。
    gs.addErrorMessage() サーバー ブラウザー ウィンドウの上部に赤色のエラーメッセージを表示します。
    spUtil.addErrorMessage() クライアント ブラウザー ウィンドウ内にエラーメッセージを表示します。
    spUtil.addInfoMessage() クライアント ブラウザー ウィンドウ内に情報メッセージを表示します。
    spUtil.addTrivialMessage() クライアント しばらくすると自動的に消えるメッセージを表示します。
    デバッガ クライアント Chrome ブラウザーと Firefox ブラウザーにブレークポイントを設定し、ブラウザー開発者コンソールでスクリプトを 1 行ずつ進めることができるようにします。
    {{data|json}} HTML このコードをページの HTML コードに追加し、データ オブジェクトを JSON 形式のポータル ページに出力することができます。
    セキュリティ制限の確認

    多くの場合、ウィジェット表示の問題は、ウィジェットスクリプトではなくアクセスルールやユーザー基準によって発生します。レコードのユーザー基準を確認し、ウィジェット内でアクセスできないすべてのレコードに、プラットフォーム UI を使用してアクセスできることを検証します。ACL デバッガーを使用して、ウィジェットにより使用されているレコードに対する必要なアクセス権をユーザーが持っていることを確認します。デバッガーの詳細については、「ACL デバッグ ツール」を参照してください。

    サービスカタログ アイテムが サービスポータル に表示されないように制限することもできます。サービスカタログ ウィジェットに対して「認定されていないか、レコードが有効ではありません」というエラーメッセージが表示された場合は、アイテムが サービスポータル から非表示になっていないことを確認してください。

    関連する Angular プロバイダーの確認
    必要な Angular プロバイダーがウィジェットに関連付けられていることを確認します。ベースシステムウィジェットに関連付けられているデフォルトの Angular プロバイダーを削除すると、予期しない動作が発生する可能性があります。たとえば、 SC カタログアイテムウィジェットから scToggleData または scBindHtmlCompile Angular プロバイダーが削除されたりします。
    コンソールでのウィジェット スコープへの参照の作成
    ウィジェットを参照してスコープ データを操作するか、ウィジェットのクライアント スクリプトおよびサーバー スクリプトを手動で実行します。参照を作成するには、以下の手順に従います。
    • 1. ウィジェットを右クリックし、[検査] を選択します。
    • 2. 開発ツールの [要素] タブで、属性 widget=widget を持つ要素をハイライト表示します。現在検査している要素の上にいくつかの要素があるのがわかります。この要素は、ウィジェットの $0 スクリプト ツールを示しています。
    • Javascript コンソールで、以下のコードを実行します。
      var scopeRef = angular.element($0).scope();
    ウィジェットへの参照を使用して、コンソール内のデータを変更します。以下の例を参照してください。変更をページに適用するには、必ずスコープで AngularJS $apply() を実行してください。
    scopeRef.data.prop1 = "Pear";
    scopeRef.$apply();
    以下の構文を使用して、参照からウィジェット クライアント コントローラーで定義された関数を実行します。
    scopeRef.exampleFunction();

    ウィジェット サーバー スクリプトを手動で実行するには、refresh コマンドを使用します。

    scopeRef.server.refresh();