このアプリケーションでは、数千の通話レコードを作成します。各通話には、いくつかの基準に基づいてランダムな SystemUser を見つける GetAnyAppropriateSystemUser() という名前のメソッドによって決定される、異なる所有者が必要です。
以下のコード例では、電話を作成し、後で AssignRequest を使用してその所有者を指定します。
PhoneCall phoneCall = new PhoneCall();
//
// stuff to set up the new PhoneCall instance here; populate fields, etc...
//
// determine this phonecall's owner through some algorithm
Guid appropriateOwner = GetAnyAppropriateSystemUser();
Guid createdPhoneCallId = _serviceProxy.Create(phoneCall);
if (createdPhoneCallId != Guid.Empty)
{
AssignRequest phoneCallAssign = new AssignRequest();
phoneCallAssign.Assignee = new EntityReference(SystemUser.EntityLogicalName, appropriateOwner);
phoneCallAssign.Target = new EntityReference(PhoneCall.EntityLogicalName, createdPhoneCallId);
_serviceProxy.Execute(phoneCallAssign);
}
これで問題なく動作しますが、作成する呼び出しと割り当てる呼び出しの 2 つがあります。Create() メソッドを呼び出す前に PhoneCall レコードの「所有者 ID」を設定するだけでよいので、後で AssignRequest を呼び出す必要がなくなりますか? それは機能しているようで、以下に示すように、SDK で同様のことを行う例を見つけました。
SDK サンプル: 目標収益に対するカスタム期間の目標データの積み上げ集計
// Create three goals: one parent goal and two child goals.
Goal parentGoal = new Goal()
{
Title = "Parent Goal Example",
RollupOnlyFromChildGoals = true,
ConsiderOnlyGoalOwnersRecords = true,
TargetMoney = new Money(300.0M),
IsFiscalPeriodGoal = false,
MetricId = new EntityReference
{
Id = _metricId,
LogicalName = Metric.EntityLogicalName
},
GoalOwnerId = new EntityReference
{
Id = _salesManagerId,
LogicalName = SystemUser.EntityLogicalName
},
OwnerId = new EntityReference
{
Id = _salesManagerId,
LogicalName = SystemUser.EntityLogicalName
},
GoalStartDate = DateTime.Today.AddDays(-1),
GoalEndDate = DateTime.Today.AddDays(30)
};
_parentGoalId = _serviceProxy.Create(parentGoal);
動作しているように見えますが、新しいレコードを作成する前に ownerid を設定する場合に注意する必要があることはありますか? 違いはありますか?
事前にどうもありがとうございました。