チュートリアル: トラブルシューティング コンポーネントの実装

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

トラブルシューターは、選択したSitecoreアイテムが正しく設定され、適切に動作しているかどうかを判断するロジックをSitecoreユーザーが実行できるようにするコンポーネントです。

このチュートリアルでは、テキスト ファイルのカスタム プロバイダーの実装に関するチュートリアル シリーズで構成されたファイル システム プロバイダーにトラブルシューティング機能を追加します。これにより、Sitecoreサーバーがアクセスできるファイルを使用するようにファイル システム エンドポイントが設定されているかどうかを判断できるトラブルシューティング ツールが追加されます。

トラブルシューターは、もともとエンドポイント用に設計されました。これらは、エンドポイントが適切に設定されているかどうかをユーザーが判断できるようにするために使用されます。これはトラブルシューターの主な用途ですが、アイテムが次のData Exchange Framework基本テンプレートから継承されていれば、任意のタイプのアイテムで使用できます。

  • Convertible

  • Troubleshootable

このチュートリアルでは、次の方法について説明します。

  • トラブルシューターコンポーネントを構築する

  • エンドポイントでのトラブルシューティング ツールを指定する

  • トラブルシューティング ツールをテストする

メモ

完成したコードとインストール パッケージは 、GitHubで入手できます。

トラブルシューターコンポーネントを構築する

Microsoft Visual Studioでトラブルシューティング コンポーネントを作成し、サーバーに配置する必要があります。

トラブルシューターコンポーネントを作成するには:

  1. Visual Studioで、次のクラスを追加します。

    using Sitecore.DataExchange.Models;
    using Sitecore.DataExchange.Troubleshooters;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Examples.DataExchange.Providers.FileSystem
    {
        public class TextFileEndpointTroubleshooter : BaseEndpointTroubleshooter
        {
            public TextFileEndpointTroubleshooter()
            {
            }
            protected override ITroubleshooterResult Troubleshoot(Endpoint endpoint, TroubleshooterContext context)
            {
                var settings = endpoint.GetPlugin<TextFileSettings>();
                if (settings == null)
                {
                    return TroubleshooterResult.FailResult("The endpoint is missing the plugin TextFileSettings.");
                }
                if (string.IsNullOrWhiteSpace(settings.Path))
                {
                    return TroubleshooterResult.FailResult("The endpoint does not have a file path specified on it.");
                }
                if (!File.Exists(settings.Path))
                {
                    return TroubleshooterResult.FailResult(
                        "The path specified on the endpoint either " +
                        "points to a file that does not exist " +
                        "or the process does not have permission to read the file.");
                }
                return TroubleshooterResult.SuccessResult("The specified file exists and can be accessed.");
            }
        }
    }
    手記

    このトラブルシューターは、Sitecore.DataExchange.Troubleshooters.BaseEndpointTroubleshooter.任意のタイプのコンポーネントに対してカスタムトラブルシューティングを作成するには、から継承Sitecore.DataExchange.Troubleshooters.ITroubleshooter

  2. プロジェクトをコンパイルします。

  3. Examples.DataExchange.Providers.FileSystem.dllをSitecoreサーバーにデプロイします。

エンドポイントでのトラブルシューティング ツールを指定する

トラブルシューターは、Data Exchange FrameworkテンプレートConvertibleおよびTroubleshootableから継承する任意のアイテムに指定できます。

この例では、トラブルシューティング ツールは、条件を満たすBase Endpointテンプレートから継承されるテキスト ファイル エンドポイントに追加されるため、追加の作業は必要ありません。

エンドポイントでトラブルシューティング ツールを指定するには:

  1. コンテンツ エディターで、/sitecore/templates/Data Exchange/Providers/File System/Endpoints/Text File Endpoint/__Standard Valuesに移動します。

  2. 右側のペインで、次のフィールド値を指定します。

    価値

    Troubleshooter Type

    Examples.DataExchange.Providers.FileSystem.TextFileEndpointTroubleshooter, Examples.DataExchange.Providers.FileSystem

  3. アイテムを保存します。

トラブルシューティング ツールをテストする

トラブルシューティング ツールはテキスト ファイル エンドポイントに割り当てられているため、トラブルシューティング ツールをテストするには、次の操作を行う必要があります。

  1. コンテンツ エディターで、テナントを選択します。 Endpoints/Providers/File System/City Information Fileに移動します。

    Tenant endpoint provider file system item in content tree
  2. メニュー リボンで、Run Troubleshooterをクリックします。

    Run Troubleshooter button in menu ribbon

エンドポイントが適切に設定され、ファイルが存在し、Sitecoreサーバーがファイルにアクセスできる場合は、成功メッセージが表示されます。

Success message

エンドポイントにファイルパスが指定されていない場合は、エラーメッセージが表示されます。

Missing file path error message

エンドポイントにファイル パスが指定されているが、ファイルが存在しない場合、またはファイル権限によってSitecoreサーバーがファイルにアクセスできない場合は、エラー メッセージが表示されます。

File cannot be read error message
この記事を改善するための提案がある場合は、 お知らせください!