---
title: "カスタムバリュー"
slug: "custom-values"
abstract: "カスタム値を例とデータ共有する方法の概要。"
---
# カスタムバリュー

カスタム値はアクティビティタイプ同士でデータを共有できるようにします。カスタムデータは現在の登録に特化し、オートメーションデータベースにのみ格納されます。恒久的な保存を意図していません。重要な情報を別の場所やサービス(xConnectクライアントの利用など)に保存してください。

カスタム値は文字列キー値のペアです。アクティビティはカスタム値を読み書きできます。プラン内の他のアクティビティはこれらの値を読み、更新できます。

カスタム値の一般的な用途は、あるアクティビティから別のアクティビティへ計算を繰り返すのを避けることです。例えば、特定の結果を現在の相互作用から検索するアクティビティがあるとします。結果が存在すれば、そのアクティビティはその結果に関する関連データをカスタム値に保存できるため、他のアクティビティが結果を探す必要がなくなり、直接カスタム値にアクセスできます。

## カスタム値の設定

Invokeの中にcontext.SetCustomValue(string,string)方法を使います。

public ActivityResult Invoke(IContactProcessingContext context)
{
 var outcome = context.Interaction.Events.FirstOrDefault(x => x.DefinitionId == MyOutcomeDefinitionId) as Outcome;

 if(outcome != null)
 {
 context.SetCustomValue("cost", outcome.MonetaryValue.ToString());
 return new SuccessMove("triggered");
 }

 return new SuccessMove("not-triggered");
}
## カスタム値の取得

Invokeの中にcontext.GetCustomValue(string,string)方法を使います。

public double ValueLimit { get; set; }

public ActivityResult Invoke(IContactProcessingContext context)
{
 var monetaryValue = decimal.Parse(context.GetCustomValue("cost"));

 if(monetaryValue >= ValueLimit)
 {
 return new SuccessMove("over");
 }

 return new SuccessMove("under");
}

## カスタム値のライフタイム

Sitecoreはカスタム値をオートメーションデータベースに保存します。登録を削除すると、アクティビティはSuccessExitPlanを返し、システムはカスタム値を破棄します。