述語

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

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

述語とは、特定の接触の側面、例えば好みの言語や特定のキャンペーンを一度にトリガーしたかどうかなどに関連する条件やセグメントクエリを定義するクラスです。述語インターフェースや基本クラスは存在しません。条件クエリとセグメントクエリの組み合わせが述語を構成します。

述語は以下のインターフェースを実装します:

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

条件クエリやセグメンテーションクエリの使用はコンテキストによって決まります。例えば:

  • List Managerは述語をセグメンテーションエンジンに渡し、セグメンテーションエンジンは IContactSearchQueryFactory を使ってマッチするコンタクトのリストを取得します。
  • マーケティングオートメーションエンジンは ICondition を評価し、その結果を使ってコンタクトが計画内でどこに進むべきかを判断します。
predicates1.png

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

Sitecore。ルールとSitecoreの違い。フレームワーク。ルール

Sitecore.RulesSitecore.Framework.Rulesはルールエンジンの全く別の実装であり、重複しません。しかし、両方の条件タイプはルールエディター UIで利用可能です。以下の例では、ハイライトされた条件がIConditionを実装しています:

rules1.png

!注コンポーネントのパーソナライズはIConditionをサポートしていません。同じロジックをコンポーネントパーソナライズとマーケティングオートメーションに使いたい場合は、マーケティングオートメーション用のICondition実装とコンポーネントパーソナライズ用のRuleConditionwhereT

以下の例では、AddressCityMatchesがIContactSearchQueryFactoryとIConditionの両方を実装しています。

  • マーケティングオートメーションの文脈では、 Evaluate() はコンテキストの連絡先の都市が提供された都市と一致しているかどうかによって真または偽を返します。
  • セグメンテーションの文脈では、 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();

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); } } }

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