述語

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

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

述語は、連絡先の特定の側面 (優先言語や特定のキャンペーンをトリガーしたことがあるかどうかなど) に関連する条件とセグメンテーションクエリを定義するクラスです。述語インターフェイスや基本クラスはありません。条件とセグメンテーションクエリの組み合わせが述語を構成します。

述部は、次のインターフェイスを実装します。

  • Sitecore.Framework.Rules.ICondition条件を定義します

  • Sitecore.XConnect.Segmentation.Predicates.IContactSearchQueryFactoryセグメンテーションクエリを定義します

コンテキストは、条件クエリとセグメンテーションクエリのどちらを使用するかを決定します。例えば:

  • List Managerは述語をセグメンテーション エンジンに渡し、セグメンテーション エンジンはIContactSearchQueryFactoryを使用して一致する連絡先のリストを取得します。

  • マーケティング オートメーション エンジンはIConditionを評価し、その結果を使用して、取引先担当者がプラン内のどこに移動するべきかを決定します。

メモ

述語によっては、IConditionを実装することだけが理にかなっています。たとえば、「連絡先の電子メールアドレスが___________と一致するとき」(Sitecore.XConnect.Segmentation.Predicates.Contacts.EmailAddressMatches)のロジックは、1つの連絡先しか返されないため、セグメンテーションクエリには適していません。

Sitecore。ルールとSitecoreの比較。フレームワーク.ルール

Sitecore.RulesSitecore.Framework.Rulesは、ルール エンジンの2つの完全に別個の実装であり、重複しません。ただし、どちらのタイプの条件もルールエディタのUIで使用できます。次の例では、強調表示された条件がIConditionを実装します。

手記

コンポーネントのパーソナライゼーションは、IConditionをサポートしていません。コンポーネントのパーソナライゼーションとマーケティングオートメーションに同じロジックを使用する場合は、マーケティングオートメーションのICondition実装とコンポーネントのパーソナライゼーションのRuleCondition<T>whereT:RuleContext実装を作成する必要があります。

例: AddressCityMatches

次の例では、AddressCityMatchesIContactSearchQueryFactoryIConditionの両方を実装しています。

  • マーケティングオートメーションのコンテキストでは、Evaluate() は、コンテキストコンタクトの市区町村が指定された市区町村と一致するかどうかに応じて、trueまたはfalseを返します。

  • セグメンテーションのコンテキストでは、CreateContactSearchQuery() はセグメンテーションクエリの一部を形成する式を構築します。

using System;
using System.Linq.Expressions;
using Sitecore.Framework.Rules;
using Sitecore.XConnect.Collection.Model;

namespace Sitecore.XConnect.Segmentation.Predicates.Contacts
{
    public class AddressCityMatches : ICondition, IContactSearchQueryFactory
    {
        public string City { get; set; }

        public StringOperationType Comparison { get; set; }

        // Used for marketing automation
        public bool Evaluate(IRuleExecutionContext context)
        {
            var contact = context.Fact<Contact>();

            return Comparison.Evaluate(contact.Addresses()?.PreferredAddress?.City, City);
        }

        // Used for segmentation
        public Expression<Func<Contact, bool>> CreateContactSearchQuery(IContactSearchQueryContext context)
        {
            return contact => Comparison.Evaluate(contact.Addresses().PreferredAddress.City, City);
        }
    }
}
この記事を改善するための提案がある場合は、 お知らせください!