1. 検証フェーズのスクリプト

アクション スクリプトの例 (検証フェーズ)

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

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

以下に、アセットが作成または変更されたときに検証フェーズ (処理中) のトリガーによって実行されるアクション スクリプトの例を示します。このスクリプトは、アセットのファイル名に有効な Web 拡張子が付いているかどうかを検証します。

ユース ケース

  1. ユーザーがアセットを作成または変更します。
  2. アセットのファイル名に有効な Web 拡張子が付いていない場合は、例外がスローされます。

スクリプト

using System.Linq;

var webExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif" };

var entity = Context.Target as IEntity;

var filename = await entity.GetPropertyValueAsync<string>("FileName");
if (string.IsNullOrEmpty(filename)) return;

var extension = GetExtension(filename)?.ToLowerInvariant();

if (string.IsNullOrEmpty(extension)) return;

if (!webExtensions.Contains(extension))
{
throw new ValidationException(
"The asset is not valid.",
new ValidationFailure("The file's extension must be the extension of a valid web filetype.", filename));
}

string GetExtension(string path)
{
var tokens = path.Split('.');
if (tokens.Length > 1)
{
return "." + tokens[tokens.Length - 1];
}
return null;
}

スクリプトの説明

  1. スクリプトで使用するライブラリをインクルードします。

    using System.Linq;
    ヒント

    インクルードするライブラリを確認するには、「コンテキスト プロパティ」セクションのプロパティ タイプを参照してください。

  2. Web 拡張子のリストを定義します。アセットのファイル名の拡張子がこのリストに含まれていない場合、そのファイル名は有効ではありません。

    var webExtensions = new [] { ".jpg", ".jpeg", ".png", ".gif" };
  3. Context から Target オブジェクトを取得し、IEntity にキャストします。Target は、作成または変更イベントに関与するアセットです。

    var entity = Context.Target as IEntity;
    警告

    Target オブジェクトのタイプは、トリガーの目的 (エンティティ、エンティティ定義、ポリシーなど) によって異なります。この例では、トリガーの目的はエンティティの作成エンティティの変更です。したがって、TargetIEntity にキャストする必要があります。

    ヒント

    コンテキスト プロパティの TargetType は、Target のタイプを示します。TargetType の有効な値は EntityEntityDefinitionPolicyDataSource です。コンテキスト プロパティの詳細については、「コンテキスト プロパティ」セクションを参照してください。

  4. GetPropertyValueAsync を使用して、Target オブジェクトから Filename プロパティを取得します。

    var filename = await entity.GetPropertyValueAsync<string>("FileName");
    注意

    スクリプト API は遅延読み込みを使用します。GetPropertyValueAsync は、特定のプロパティが既に読み込まれているかどうかをチェックします。読み込まれていない場合は、自動的に読み込まれます。

  5. アセットにファイル名がない場合、スクリプトは終了します。

    if (string.IsNullOrEmpty(filename)) return;
  6. Path.GetExtension(System.IO) を使用して、ファイル名から拡張子を取得します。

    var extension = GetExtension(filename)?.ToLowerInvariant();
  7. ファイル名に拡張子がない場合、スクリプトは終了します。

    if (string.IsNullOrEmpty(extension)) return;
  8. 拡張子が有効な Web 拡張子でない場合は、検証例外をスローします。

    if (!webExtensions.Contains(extension))
    {
    throw new ValidationException(
    "The asset is not valid.",
    new ValidationFailure("The file's extension must be the extension of a valid web filetype.", filename));
    }
    注意

    ValidationExceptionValidationFailure の詳細、および使用可能なカスタム例外の一覧については、「SDK API リファレンス ガイド」(Stylelabs.M.Sdk.Exceptions)を参照してください。

  9. これは、ファイル名の拡張子の取得に使用される内部メソッドです。

    string GetExtension(string path)
    {
    var tokens = path.Split('.');
    if (tokens.Length > 1)
    {
    return "." + tokens[tokens.Length - 1];
    }
    return null;
    }

設定

  1. アクション スクリプトを作成し、パブリッシュして有効にします。

  2. アクション スクリプト タイプのアクションを作成し、上記で作成したスクリプトにリンクします。

  3. 新しいトリガーを作成し、トリガーの目的をエンティティの作成エンティティの変更に設定します。

    • トリガー条件で、エンティティ定義としてアセットを追加した後、新しい条件を追加します。
    • トリガー アクションで、[検証アクション] の下にこのアクションを追加します。
  4. トリガーを保存して有効にします。

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